web-dev-qa-db-ja.com

zshの.shファイルから環境変数をエクスポートする方法は?

次のシェルスクリプトがあります

TEST=/foopath
export TEST

test.shというファイルにあり、ここでchmod +x test.shを実行しました

./test.shを実行すると、echo $TESTを実行して出力/foopathを表示できると思いますが、何も表示されません。

上記のスクリプトが$TESTを実行したときに変数./test.shをエクスポートするために必要な変更は何ですか。これはbashとzshの違いですか?

4
ams

それは親対子シェルの違いです。

test.shを実行すると、新しいシェルが起動してそれを実行します。変数はそのシェル内でエクスポートされます。つまり、新しいシェルはそれを認識しており、それ自体の子も認識しています。 test.shを開始した親シェルはまったく影響を受けません(影響を受けません)。

現在のシェルで変数を表示するには、代わりにスクリプトを入手する必要があります。

. test.sh

.test.shの間にはスペースを入れます)。これは、新しいシェルを開始せずにtest.shを実行します。

3
Stephen Kitt