如何透過呼叫來源另一個 csh 腳本的 tcsh 腳本來設定環境變量

如何透過呼叫來源另一個 csh 腳本的 tcsh 腳本來設定環境變量

我無法設定.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 中運行程式碼。

相關內容