「。」そして「ソース」を使ってスクリプトを実行します。

「。」そして「ソース」を使ってスクリプトを実行します。
  1. bashスクリプトを実行する2つの方法が同じかどうか疑問に思います。

    . ./myScript.sh
    
    source myScript.sh
    
  2. どちらもスクリプトを実行するのではなく、スクリプトの内容を実行しますか?つまり、スクリプトを実行するためのサブシェルを作成しませんか?

ベストアンサー1

  1. 彼らはまったく同じことをするので、bashで同じです。一方、source5文字長く、POSIX専用シェルやBourneに移植できない一方.(点)は移植可能なのでsource

  2. そうですね。ファイルのインポートは現在のシェルでコマンドを実行し、これは現在のシェル環境に影響します。それでもソースファイルに引数を渡すことができ、bashは実際には$PATH通常のコマンドのようにファイル名を見つけます(ファイル名にスラッシュが含まれていない場合)。


.vsの元の質問とは関係ありませんが、sourceあなたの例では

. ./myScript.sh 

等しくない

source myScript.sh

なぜなら while.source機能は同じですmyScript.shが、./myScript.sh同じではないからです。スラッシュが含まれているため、./myScript.shパスとして解釈され、シェルにはスラッシュがないため、最初に./myScript.shシェルmyScript.sh$PATH検索します。これはPOSIX指定規格の行動.。ほとんどのシェルはデフォルトでこれを行いますが、拡張機能(パスの検索後に現在の作業ディレクトリから検索)や./ behaviorを変更するオプションを追加することもできますsource

おすすめ記事