16

スクリプトの実行が終了した後、シェルスクリプトから設定された環境変数を保持するにはどうすればよいですか?

4

3 に答える 3

20

これは、スクリプトの実行では不可能です。スクリプトは、スクリプトが完了すると失われる独自のサブシェルを生成します。

スクリプトにある可能性のあるを保持するにexportは、それを呼び出します

  • どちらかとして
    . myScript.sh
    
  • また
    source myScript.sh
    

.との間のスペースに注意してくださいmyScript.sh。また、「はBash ではsource同義語ですが、POSIX では同義語ではないため、互換性を最大限に高めるためにピリオドを使用してください。.sh

于 2013-02-07T02:32:16.967 に答える
11

次のようにスクリプトを実行します。

source <script>

-OR-

. <script>

これにより、現在のシェルでスクリプトが実行され、現在のシェルで変数が定義されます。スクリプトが実行された後、変数は現在のシェルに保持されます。

于 2013-02-07T03:30:20.823 に答える
1

環境変数は、各プロセスに固有の環境として存在します。シェルは、エクスポートされた変数の COPY を環境として子に渡しますが、環境を親または子以外のプロセスに戻す方法はありません。これらの変数を出力して、親にロードできます。または、既に述べたように、現在のシェルで「ソース スクリプト」または「. スクリプト」のいずれかを使用してスクリプトを実行できます (. が PATH にない場合は ./script が必要になる場合があります)。一部のツールは変数を出力し、シェルは のようなバッククォートを使用して変数をロードできますssh-agent。そうすれば、ssh-agent が出力するものはすべてコマンドとして実行されます。「VAR1 = VAL; VAR2 = VAL2」のようなものが表示される場合、それはあなたが望むことをするかもしれません。

于 2013-02-07T05:12:31.607 に答える