2

スクリプト内からの最も単純な変数のエクスポートでさえ、bashで機能させることができません-何が間違っているのでしょうか?

ファイルtest.sh

#!/bin/bash
echo $ttt
ttt="fffalse"
export ttt
echo $ttt

bashテスト:

hpek@hpek:~/temp$ export ttt="tttrue"
hpek@hpek:~/temp$ ./test.sh 
tttrue
fffalse
hpek@hpek:~/temp$ ./test.sh 
tttrue
fffalse
hpek@hpek:~/temp$ 

編集:

私は今、答えから、これはうまくいかないことを知っています。-しかし、どのようにして単一の変数をプロセス間で記憶させることができますか?ファイルに保存する必要がありますか?

4

2 に答える 2

4

./test.shと同じですbash test.sh

実行中の各シェルスクリプトは、事実上、親シェルのサブプロセス(子プロセス)です。
また、サブプロセスはenv-varをその親にエクスポートできません。


これを試すことができます(同じ環境で実行):

. test.sh
于 2012-05-05T00:28:30.117 に答える
3

export現在のプロセスで動作し、その後に子が生成されます。プロセスの境界(親、既存の子、無関係のプロセス)を超えて機能することはありません。環境は、ファイルシステムやメールボックスのようではなく、一種のシャドウ引数リストのように動作します。

于 2012-05-05T00:28:21.880 に答える