我试图将路径追加到PERL5LIB环境变量的末尾,但是我不确定该变量将始终存在。如果不存在,我想简单地将其初始化为我要附加的值。

这是一个有效的示例:

if ( $?PERL5LIB ) then
    setenv PERL5LIB ${PERL5LIB}:/some/other/path
else
    setenv PERL5LIB /some/other/path
endif

尽管这行得通,但由于我基本上必须写两次相同的行,所以它似乎仍然很笨拙。我想做的是提出一种更有效的单行解决方案(可能使用参数扩展)。

有没有办法将其合并为一条线? (或者几行不涉及多次写出“/some/other/path”)

例如,可以在bash中完成此操作:
export PERL5LIB=${PERL5LIB:+${PERL5LIB}:}/some/other/path

最佳答案

如果未定义环境变量,请将其设置为空字符串。这样可以避免重复。

if ( ! $?PERL5LIB ) then
        setenv PERL5LIB ""
else
        setenv PERL5LIB "${PERL5LIB}:"
endif
setenv PERL5LIB ${PERL5LIB}/some/other/path

关于environment-variables - 附加到csh中可能尚不存在的环境变量的简单方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47722729/

10-09 03:07