- ベストアンサー
シェルとシェルの間で環境変数を引き継ぐ方法
初めて質問させていただきます。 シェル内でsetenvにて定義された変数を別のシェルにて使う方法があれば教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あ~, foo.csh の中で bar.csh という形で呼出しているんですね. この場合, foo.csh を実行しているシェルとは別に bar.csh を実行するためにシェルを起動します. そして bar.csh の中で設定した環境変数は bar.csh のためのシェルが終了すると同時に破棄されます. そのため bar.csh の中で環境変数を設定しても, foo.csh には影響しません. これに対し foo.csh の中に source bar.csh と書いてやると, foo.csh を実行しているシェルが bar.csh も実行します. なので, 「別のファイルで環境変数を設定し, それを元のシェルにも引き継ぎたい」場合には source (Bourne shell 系なら . というコマンド) を使います.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
その, setenv で環境変数を設定したシェルの子プロセスとして別のシェルを動かせばいいんでは?
質問者
補足
ご回答ありがとうございます。 私の質問の内容が曖昧だったため、補足させていただきます。 foo.cshからbar.cshを呼び出し、bar.cshの中で変数hogeを定義していたのですが、bar.cshに処理が戻ると変数hogeが使えませんでした。 結局、foo.cshにおいて変数hogeをsetenvで流すロジックに気づいたので問題は解決したのですが、上記の処理結果はなぜなのかわかりません。 ご存知でしたらご教授願います。
お礼
sourceでうまくいきました。 目からウロコです。 的確なご回答ありがとうございました。