こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2007-03-15 18:55:22

QNo.2836012

暇なときに回答ください

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

質問で、「子シェルで設定した変数が読み込めない」とお書きだったので、ちょっと怪しいなと思っていたのですが、変数やプロセスに対しての理解が誤っているようです。

子プロセス(子シェルや子コマンド)で設定したシェル変数や環境変数は、親プロセス(親シェル等)に影響を与えません。
したがって、別ファイルに書いた設定コマンドを有効にするには、子プロセスとして動かしてはだめで、sourceコマンドで親プロセス内で処理する必要があります。

簡単な例題で試してみるところからはじめるのがいいでしょう。

投稿日時 - 2007-03-16 23:11:42

ANo.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

投稿日時 - 2007-03-15 23:32:35

補足

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

投稿日時 - 2007-03-16 09:41:33

あなたにオススメの質問