別の csh スクリプトをソースとする tcsh スクリプトを呼び出して環境変数を設定する方法

別の csh スクリプトをソースとする tcsh スクリプトを呼び出して環境変数を設定する方法

内部でこのファイルをソースとする.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.cshsetenvおよびその他のコマンドが 含まれています:
    setenv MGC_RVEDB_DIR {$PERC_PATH}/setup:{$HOME}
    


source スクリプト パスを明示的に指定せずに、ターミナルで環境変数を設定するにはどうすればよいですか?

答え1

環境変数は外部実行ファイルからシェルに「上向きに」伝播することはできません。cshスクリプトで設定する必要がある場合は、しなければならない sourceそのスクリプト – 必要に応じて、エイリアスの背後に「ソース」を隠します。

alias perc 'source $PERC_PATH/bin/runperc.csh'

代替手段もいくつかあります。たとえば、スクリプトで環境変数を stdout に出力し、親で評価できるようにするなどです。ただし、それらの方法はさらに冗長になり、親シェルで直接コードを実行する必要があります。

関連情報