別のファイルの行を現在のシェルにエクスポートする方法

別のファイルの行を現在のシェルにエクスポートする方法

次のファイルにこのコンテンツが含まれていますfoo.env

foo=bar

その後、そのファイルを読み、次の行をシェルにエクスポートしたいと思います。

for line in $(cat ./foo.env); do
 eval export $line
done

しかし、私が走るとき

echo $foo

変数が空です。私が何を間違っているのでしょうか?

答え1

変更されていないコード

for line in $(cat ./foo.env); do
 eval export $line
done
echo $foo

ファイルに入れてshまたはbashを使用して実行すると、正確に目的のタスクが実行されます。たぶんecho $foo別のシェルで実行していますか?

ただし、POSIXシェルはこの場合に特別に組み込み関数を定義します。

. ./foo.env
echo $foo

関連情報