UNIXの環境変数(シェル変数)や、シェルの環境を設定するUNIXコマンド。
設定されているシェル変数の一覧を表示したり、環境を設定したりする。
「man set」ではsetのオプションは出てこない。
シェルのマニュアル(「man
bash」とか)の中に組み込みコマンドとしてsetやsetのオプションが載っている。
設定されているシェル変数の一覧を表示する。
$ set
シェル自体の環境(オプション)の状況を一覧表示する。(bash)
$ set -o allexport off braceexpand on emacs on 〜
noclobberをonにする。
すると、リダイレクト(「>」「>&」「<>」)でファイルを指定した際に
ファイルが既に存在しているとエラーになる(上書きできない)。
(「>|」なら上書き可能)
noclobberをoffにする。(リダイレクトの出力先ファイルが既に存在していたら上書きする)
シェルスクリプト内でsetを使って、コマンドの実行に関する設定を行うことが出来る。[2015-04-04]
実行する際に、実行するコマンドを出力する。[2015-04-04]
(シェルスクリプトの先頭のシェバン(#!)で-xを指定すると実行するコマンドが表示されるようになるが、それと同様)
スクリプトの内容 ( t.sh ) |
#!/bin/bash |
#!/bin/bash -x |
#!/bin/bash |
||||||
---|---|---|---|---|---|---|---|---|---|
実行方法 | ./t.sh |
bash t.sh |
bash -x t.sh |
./t.sh |
bash t.sh |
bash -x t.sh |
./t.sh |
bash t.sh |
bash -x t.sh |
実行結果 | start |
start |
+ echo start |
+ echo start |
start |
+ echo start |
+ echo start |
+ echo start |
+ echo start |
シェバン(#!)で-xを指定すると、スクリプトファイルを直接実行した場合(./script.sh
)だけ有効になる。
bashコマンドの引数としてスクリプトファイルを指定して実行した場合、bashコマンドのオプションとして-xを付けると、常に有効になる。
シェルスクリプト内でset -xしておくと、常に有効になる。
実行したコマンドが失敗する(0以外を返す)と、そこでシェルスクリプトの実行を終了する。[2015-04-04]
途中のコマンドが失敗したら終了してよい場合、毎回戻り値の判定を行わなくて済むので、楽だ(笑)
スクリプトの内容 | #!/bin/bash |
#!/bin/bash |
#!/bin/bash |
---|---|---|---|
実行結果 | rm: `/abc' を削除できません: No such file or directory |
rm: `/abc' を削除できません: No such file or directory |
+ rm /abc |
戻り値 (echo $?) |
0 | 1 ( rm /abc の戻り値になる) |
1 ( rm /abc の戻り値になる) |
スクリプト自体の戻り値は、失敗したコマンドの戻り値となる。