我無法設定.csh
使用另一個.tcsh
在其中獲取此文件的環境變數:
- 這不會設定環境變數:
$PERC_PATH/bin/runperc.csh ...<some arguments>
- 而這確實設定了環境變數:
source $PERC_PATH/bin/runperc.csh ..<some arguments>
兩者都是可執行的,shebangs 是/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
環境變數永遠不能從外部執行檔「向上」傳播到 shell 中。如果它們需要由 csh 腳本設置,那麼您必須 source
該腳本 - 如果需要,可以將「來源」隱藏在別名後面。
alias perc 'source $PERC_PATH/bin/runperc.csh'
有一些替代方案 - 例如,使腳本將環境變數輸出到 stdout 以由父級進行評估 - 但它們會更加冗長,並且仍然需要您直接在父 shell 中運行程式碼。