38

キーと値のペアを持つファイルを読み取り、それらの変数を環境変数として設定するシェルスクリプトを作成しています。しかしsource file.txt、そのファイルで定義されている変数を環境変数として設定するのか、それともファイルを1行ずつ読み取り、エクスポートコマンドを使用して設定するのか、疑問があります。

この場合のsourceコマンドはexportとは異なりますか?

4

2 に答える 2

36

ファイルを作成すると、割り当てが設定されますが、オプションが設定されていsourceない限り、変数はエクスポートされません。allexportすべての変数をエクスポートする場合は、ファイルを読み取って明示的に使用するよりもallexportsourceファイルを使用する方がはるかに簡単です。export言い換えれば、あなたはするべきです:

set -a
. file.txt

.(よりポータブルであるため、私は好みますがsource、で問題なくsource動作しbashます。)

変数をエクスポートしても、環境変数にはならないことに注意してください。サブシェルの環境変数にするだけです。

于 2013-03-18T11:13:58.113 に答える