• ベストアンサー

Shellでの環境変数

Shell(親)ではShell(子)を呼び出しています。 Shell(子)では環境変数を設定しており、設定直後にechoすると設定した環境変数の内容が出力されます。 ですが、Shell(子)からShell(親)に戻った直後にShell(子)で設定した環境変数をechoすると、値が空になっています。 なんで空になるのかわかりません。 お手数かけますが、ご教授おねがいします。 <Shell(親)の内容> ./Shell(子) echo "TESTDIR(親):$TESTDIR" <Shell(子)の内容> TESTDIR=/dev/fs/test export TESTDIR echo "TESTDIR(子):$TESTDIR" <Shell(親)の実行結果> TESTDIR01:/dev/fs/test TESTDIR02: ←空白 ※環境 OS:Windows 2003 Server Shell:SUAのKorn Shell

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

通常、環境変数はプロセス間で共有しているのではなく、子プロセスが起動するときに親プロセスからコピーしているだけです。 子プロセスで環境変数を変更しても親プロセスには反映されませんし、子プロセスを起動してから親プロセスで環境変数を変更しても子プロセスには反映されません。

touzuki
質問者

お礼

的確な回答ありがとうございます。 理解できました。

その他の回答 (1)

  • splwtr
  • ベストアンサー率16% (75/461)
回答No.1

基本的に親の環境変数を子は引き継ぎません。 (fork() , exec() して子供を作る場合です) UNIX系の場合ですが、Windowsもそうなのかもしれませんね? 起動オプションで変更可能かもしれません。 また、同じ環境変数のファイルをロードすることで対処できると 思います。 回答になってませんね。失礼しました。

touzuki
質問者

お礼

Fork-Exec、Shell初心者なので勉強になりました。 言語の仕様を把握していないとだめですね…。 勉強します。 ありがとうございました。

関連するQ&A

専門家に質問してみよう