bashスクリプトの呼び出し

bashスクリプトの呼び出し

シンプルなスクリプトを用意する:

echo "file: $0"

次のように呼び出された場合:

bash スクリプト

または

./myscript.sh

スクリプトのファイル名 ( file: myscript.sh) は期待どおりに返されますが、呼び出されると次のようになります。

ソース myscript.sh

または

。 ./myscript.sh

bashスクリプトファイル名の代わりにシェル名 ( ) を指定します。

なぜこうなるのでしょうか?

答え1

最初の呼び出しでは、スクリプトを解釈するために bash の新しいインスタンスが開始され、bash が$0そのパスに設定されます。

2 回目の呼び出しでは、ファイルを実行可能ファイルとして扱い、それを実行するので、$0そのファイルを指します。

最後の 2 つの呼び出しは、ファイルを bash の現在のインスタンスにロードし、$0そこを指します。

注意: #2 ではファイルが実行可能である必要がありますが、#1、#3、#4 では必要ありません。

関連情報