-
次の2つのbashスクリプトの実行方法が同等かどうか疑問に思いました
?. ./myScript.sh source myScript.sh - どちらもスクリプトを実行する代わりにスクリプトのコンテンツを実行していますか?つまり、スクリプトを実行するためのサブシェルを作成していませんか?
承認された回答:
-
それらはまったく同じことをするという点でbashと同等です。一方、
sourceは5文字長く、POSIXのみのシェルまたはBourneには移植できませんが、.(ドット)はそうなので、sourceをわざわざ使うことはありません 。 -
それは正しいです–ファイルを調達すると、現在のシェルでコマンドが実行され、現在のシェル環境に影響します。ソースファイルに引数を渡すことはできますが、bashは実際には
$PATHを調べます。 スラッシュが含まれていない場合は、通常のコマンドと同じようにファイル名を指定します。
. vssource 、しかしあなたの例では、
. ./myScript.sh
と同じではありません
source myScript.sh
.の間 およびsource 機能的には同一、myScript.sh および./myScript.sh 同じではありません。 ./myScript.sh以降 スラッシュが含まれ、パスとして解釈され、シェルは./myScript.shを使用するだけです 。ただし、myScript.sh スラッシュがないため、シェルは$PATHを実行します 最初に検索してください。これは、POSIXで指定されている. 。ほとんどのシェルはデフォルトでこれを使用しますが、拡張機能(パス検索後の現在の作業ディレクトリでの検索など)または. /source 。