次のスクリプトの実行方法の違いについてお問い合わせいたします。
. script.sh
../script.sh
. ./script.sh
よろしくお願いします。
答え1
script.sh
./script.sh
../script.sh
上記のすべてに、指定されたファイルを実行するようにカーネルに要求するシェルがあります。これは名前に関係なくシェルスクリプトである必要はありません。 1つ目はファイルを検索しPATH
、2つ目は.
現在のディレクトリ()でファイルを見つけ、3つ目は親ディレクトリでファイルを見つけます。
. script.sh
. ./script.sh
. ../script.sh
source script.sh
source ./script.sh
source ../script.sh
両方とも、指定されたファイルをシェルコマンドで開いて読み取るには、シェル自体が.
必要です。source
現在のシェル、まるで内部コマンドがシェルコマンドラインに与えられたように見えます。つまり、たとえばソーススクリプトで実行されたすべての変数の割り当ては、後でシェルに表示されますが、通常の実行ではそうではありません。source
yes の非標準同義語です.
。 1つ目はファイルをもう一度探しPATH
、2つ目は現在のディレクトリを探し、3つ目は親ディレクトリを探します。残りの3つも同じだ。
(Zshを除くと、source
Bashとは異なり、現在のディレクトリが最初にチェックされます。Bash.
では、このshopt
設定がsourcepath
無効になっていると検索も.
行われません。)source
PATH
望むより: