• 締切済み

CSHの環境変数の設定

CSHで外部で定義したconfigファイルから変数を読み込み そのシェル及び子シェル内で有効な変数として使用したのですが どのような方法がありますでしょうか? 以下の方法だと親シェルからでは子シェルで設定した変数が読み込めないため困っています。 config.csh #!/bin/csh -f setenv AAA aaa test.csh #!/bin/csh -f set APP_ROOT = `dirname $0` cd $APP_ROOT set CONFIG_FILE=$APP_ROOT"/config.csh" echo $AAA

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>これだと、シェルが終わっても設定が有効になってしまわないでしょうか? 質問で、「子シェルで設定した変数が読み込めない」とお書きだったので、ちょっと怪しいなと思っていたのですが、変数やプロセスに対しての理解が誤っているようです。 子プロセス(子シェルや子コマンド)で設定したシェル変数や環境変数は、親プロセス(親シェル等)に影響を与えません。 したがって、別ファイルに書いた設定コマンドを有効にするには、子プロセスとして動かしてはだめで、sourceコマンドで親プロセス内で処理する必要があります。 簡単な例題で試してみるところからはじめるのがいいでしょう。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

これだとどこでも読み込んでませんよね。 「config.csh」 setenv AAA aaa 「test.csh」 #!/bin/csh -f set APP_ROOT = `dirname $0` cd $APP_ROOT set CONFIG_FILE=$APP_ROOT"/config.csh" source $CONFIG_FILE #これが読み込み echo $AAA

totmon
質問者

補足

これだと、シェルが終わっても設定が有効になってしまわないでしょうか?

関連するQ&A