如何通过调用来自另一个 csh 脚本的 tcsh 脚本来设置环境变量

如何通过调用来自另一个 csh 脚本的 tcsh 脚本来设置环境变量

我无法.csh使用另一个.tcsh在其中获取此文件的环境变量来设置存在的环境变量:

  • 这不会设置环境变量:
    $PERC_PATH/bin/runperc.csh ...<some arguments>
    
  • 而这确实设置了环境变量:
    source $PERC_PATH/bin/runperc.csh ..<some arguments>
    


两者都是可执行文件,shebang 是/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 中运行代码。

相关内容