我无法.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 中运行代码。