2

BASH ページから:

スクリプトが既存のシェル内で実行されるソースを使用して実行される場合、スクリプトによって作成または変更された変数は、スクリプトの完了後も引き続き使用できます。対照的に、スクリプトがファイル名として実行される場合、スクリプトを実行するために別のサブシェル (完全に別の変数セットを持つ) が生成されます。

しかし、私が実行するとどうなりますか

. myscript &

この場合、サブシェルとして実行されますか? . myscript &とはどう違い./myscript &ますか?

4

1 に答える 1

4

はい - これを簡単にテストできます:

ソースファイル:

echo "Source File"
echo "Source PID - $BASHPID"
MYVAR=someval

実行ファイル:

. source 

echo "Exec PID -$BASHPID"
echo $MYVAR
echo done

出力:

Source File
Source PID - 34893
Exec PID - 34893
someval
done

&実行ファイルでを使用する. sourceと、実行順序が異なり、プロセスに関連付けられている PID も異なりますMYVAR。ソース ファイルに設定された変数が出力されていないことがわかります。

Exec PID - 34931

done
Source File
Source PID - 34932
于 2014-08-27T10:07:03.510 に答える