• ベストアンサー

シェルとシェルの間で環境変数を引き継ぐ方法

初めて質問させていただきます。 シェル内でsetenvにて定義された変数を別のシェルにて使う方法があれば教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.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 系なら . というコマンド) を使います.

kenji_mc17
質問者

お礼

sourceでうまくいきました。 目からウロコです。 的確なご回答ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その, setenv で環境変数を設定したシェルの子プロセスとして別のシェルを動かせばいいんでは?

kenji_mc17
質問者

補足

ご回答ありがとうございます。 私の質問の内容が曖昧だったため、補足させていただきます。 foo.cshからbar.cshを呼び出し、bar.cshの中で変数hogeを定義していたのですが、bar.cshに処理が戻ると変数hogeが使えませんでした。 結局、foo.cshにおいて変数hogeをsetenvで流すロジックに気づいたので問題は解決したのですが、上記の処理結果はなぜなのかわかりません。 ご存知でしたらご教授願います。

関連するQ&A