内部でこのファイルをソースとする.csh
別のものを使用して、 に存在する環境変数を設定することができません。.tcsh
- これにより環境変数は設定されません。
$PERC_PATH/bin/runperc.csh ...<some arguments>
- 一方、これは環境変数を設定します:
source $PERC_PATH/bin/runperc.csh ..<some arguments>
どちらも実行可能で、シェバンは/usr/bin/csh
、その中のrunperc.csh
ソースは次のようになります。perc_setup.csh
source $PERC_PATH/perc_setup.csh
perc_setup.csh
setenv
およびその他のコマンドが 含まれています:setenv MGC_RVEDB_DIR {$PERC_PATH}/setup:{$HOME}
source
スクリプト パスを明示的に指定せずに、ターミナルで環境変数を設定するにはどうすればよいですか?
答え1
環境変数は外部実行ファイルからシェルに「上向きに」伝播することはできません。cshスクリプトで設定する必要がある場合は、しなければならない source
そのスクリプト – 必要に応じて、エイリアスの背後に「ソース」を隠します。
alias perc 'source $PERC_PATH/bin/runperc.csh'
代替手段もいくつかあります。たとえば、スクリプトで環境変数を stdout に出力し、親で評価できるようにするなどです。ただし、それらの方法はさらに冗長になり、親シェルで直接コードを実行する必要があります。