次のシェルスクリプトがあります
TEST=/foopath
export TEST
test.sh
私が実行しているファイルにあります。chmod +x test.sh
実行時に実行して出力を表示できる./test.sh
ようにしたいのですが、何も表示されません。echo $TEST
/foopath
$TEST
上記のスクリプトを実行するときに変数をエクスポートするにはどのような変更が必要ですか./test.sh
?これはbashとzshの違いですか?
答え1
これが親シェルと子シェルの違いです。
を実行すると、test.sh
それを実行するための新しいシェルが起動され、そのシェル内から変数がエクスポートされます。これは、新しいシェルが自分と自分のサブシェルについて知っていることを意味します。起動した親シェルはtest.sh
まったく影響を受けません(影響を受けません)。
現在のシェルで変数を表示するには、次のスクリプトをインポートする必要があります。
. test.sh
.
(との間にスペースがありますtest.sh
。)test.sh
新しいシェルを起動せずに実行されます。