それらはまったく同じことをするという点でbashで同等です。一方、source
は5文字長く、POSIXのみのシェルやBourneに移植できません.
が、(ドット)は移植できないため、を使用することはありませんsource
。
それは正しいです-ファイルをソースすると、現在のシェルでコマンドが実行され、現在のシェル環境に影響します。ソースファイルに引数を渡すことができ$PATH
、スラッシュが含まれていない場合、bashは通常のコマンドと同じように実際にファイル名を探します。
.
vs の元の質問とは関係ありませんsource
が、あなたの例では、
. ./myScript.sh
同一ではありません
source myScript.sh
while .
とsource
は機能的に同一でmyScript.sh
あり./myScript.sh
、同じではないためです。./myScript.sh
スラッシュが含まれているため、パスとして解釈され、シェルはを使用し./myScript.sh
ます。ただし、myScript.sh
スラッシュがないため、シェルは$PATH
最初にそれを検索します。これはのPOSIX指定標準動作です.
。ほとんどのシェルはこれにデフォルト設定されていますが、拡張子(パス検索後の現在の作業ディレクトリでの検索など)または.
/ の動作を変更するオプションを追加する場合がありますsource
。