bash - 組み込みコマンド

組み込みコマンドとはbashの中に含まれているコマンド。
ファイルとして存在していないので、whichなどで調べられない。

.(ドット)コマンド

変数や関数を定義したファイルをを読み込み、利用できるようにする。

. filename

:(ヌル)コマンド

何もせず終了コード0を返す。また引数を付けると変数の設定を行うことができる。

if [ condition ]; then  #conditionが真の場合は何もしない
    :
fi

: ${var:=abc}           #varに値が入っていなければabcを代入

eval

引数をシェルのコマンドとして実行、またひとまとめにした変数の展開を行う。

$ DATE=date
$ eval $DATE              #変数を展開した結果をコマンドとして実行
Thu Aug  6 03:05:32 2009
$ eval echo $DATE         #echo $DATEコマンドを実行
data
$ eval `echo $DATE`
Thu Aug  6 03:05:32 2009  #echo $DATEコマンドの実行結果を実行

exec

新しくプロセスを作らず現行のカレントシェルのプロセスと置き換えて引数のコマンドを実行する。

$ exec ls   #lsの表示が終了するとシェルも終了してしまう。

exit

シェルを終了する場合に使う。

$ exit 0    #終了コード0を返しシェルを終了する

export

シェル関数を環境変数にする。他のコマンドやシェルからも利用できるようになる。

$ VAR=value; export VAR

read

キーボードからの入力を変数にセットする。

$ read aaa
bbb
$ echo $aaa
bbb

return

シェル関数の戻り値を設定し、終了する。

square(){
    var=`expr $1 \* $1
    if [ $? -ge 2 ]; then  #exprの戻り値が2以上だったら
        return 1
    else
        echo $var
        return 0
    fi
}

set

1.位置パラメータをシェルスクリプト内部で任意に設定する。
2.設定されている変数の一覧表示
3.シェルのオプションを変更する

vi abc
#!/usr/bin/sh
echo $1 $2
set abc 123
echo $1 $2

$ abc 5 6
5 6
abc 123

shift

位置パラメータの値を左にずらす。

vi abc
#!/usr/bin/sh
echo $1 $2
shift 2
echo $1 $2

$ abc 1 2 3
3

trap

シグラルを受けたときの処理の設定を行う。

trap [action] signal  #signalを受けたときactionを実行する

$ trap `echo abort; rm -rf /tmpfile; exit 1` 1 2 3 

unset

変数や関数を未定義にする

$ var=abc
$ echo var
abc
$unset var

wait

プロセス終了の待機を行う。
バックグランドで実行している処理が終わるのを待ち、次に進む。

wait [prosess id]

$ command1 &
$ wait $!      #バックグランドコマンドの終了を待つ
$ command2