source コマンドと ./ とのスクリプトファイルの実行の違い

SMOKEのテストケースの実行のときにこれでつまづいていた。
これらは環境変数が適用される場所が異なる。

スクリプトファイルの一行目には
#!/bin/sh
と記述される。
いまシェルにbashを使っているとして,スクリプトを実行すると,一行目のこの記述より,新しくシェルshが起動し,その中でスクリプトが実行される。つまりbash>sh の中で実行される。このスクリプトで環境変数が設定されるとする。
source コマンドでスクリプトを実行すると,この環境変数はbash にも影響が出る。
./ でスクリプトを実行すると,この環境変数はsh 内でだけ反映される。

 ほとんど似たようなことだけど場合によってはこの違いが重要になるので気を付けよう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です