一回も披露したことのない豆知識

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

A 回答 (2件)

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


子プロセスで環境変数を変更しても親プロセスには反映されませんし、子プロセスを起動してから親プロセスで環境変数を変更しても子プロセスには反映されません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/26 13:21

基本的に親の環境変数を子は引き継ぎません。


(fork() , exec() して子供を作る場合です)
UNIX系の場合ですが、Windowsもそうなのかもしれませんね?

起動オプションで変更可能かもしれません。
また、同じ環境変数のファイルをロードすることで対処できると
思います。

回答になってませんね。失礼しました。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/26 13:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!