附加到csh中可能尚不存在的环境变量的简单方法

tjw*_*992 9 csh environment-variables login-script parameter-expansion

我试图在我的PERL5LIB环境变量的末尾附加一个路径,但我不确定这个变量是否总是存在.如果它不存在,我想简单地将它初始化为我试图追加的值.

这是一个有效的例子:

if ( $?PERL5LIB ) then
    setenv PERL5LIB ${PERL5LIB}:/some/other/path
else
    setenv PERL5LIB /some/other/path
endif
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但它仍然看起来很笨重,因为我必须基本上写两次同一行.我想做的是提出一个更有效的单线解决方案(可能使用参数扩展).

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


例如,这可以在bash中完成:

export PERL5LIB=${PERL5LIB:+${PERL5LIB}:}/some/other/path
Run Code Online (Sandbox Code Playgroud)

ete*_*a3k 1

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

if ( ! $?PERL5LIB ) then
        setenv PERL5LIB ""
else
        setenv PERL5LIB "${PERL5LIB}:"
endif
setenv PERL5LIB ${PERL5LIB}/some/other/path
Run Code Online (Sandbox Code Playgroud)