キーと値のペアを持つファイルを読み取り、それらの変数を環境変数として設定するシェルスクリプトを作成しています。しかしsource file.txt
、そのファイルで定義されている変数を環境変数として設定するのか、それともファイルを1行ずつ読み取り、エクスポートコマンドを使用して設定するのか、疑問があります。
この場合のsourceコマンドはexportとは異なりますか?
ファイルを作成すると、割り当てが設定されますが、オプションが設定されていsource
ない限り、変数はエクスポートされません。allexport
すべての変数をエクスポートする場合は、ファイルを読み取って明示的に使用するよりもallexport
、source
ファイルを使用する方がはるかに簡単です。export
言い換えれば、あなたはするべきです:
set -a
. file.txt
.
(よりポータブルであるため、私は好みますがsource
、で問題なくsource
動作しbash
ます。)
変数をエクスポートしても、環境変数にはならないことに注意してください。サブシェルの環境変数にするだけです。