附加到 csh 中可能尚不存在的环境变量的简单方法
Simple way to append to an environment variable that may not exist yet in csh
我正在尝试将路径附加到我的 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
由于缺少更好的答案,我将 post 对我的问题进行稍微改进的版本。以下至少消除了两次写出路径...
set perl5lib = "/some/other/path"
if ( $?PERL5LIB ) then
setenv PERL5LIB ${PERL5LIB}:${perl5lib}
else
setenv PERL5LIB ${perl5lib}
endif
虽然只是很微小的进步,但至少有所进步。
编辑:
从技术上讲,这可以缩短为:
set perl5lib = "/some/other/path"
[ $?PERL5LIB ] && setenv PERL5LIB ${PERL5LIB}:${perl5lib} || setenv PERL5LIB ${perl5lib}
不是最可读的,但我想这已经差不多了。
编辑 2:
可能更具可读性? ...我真的不知道。
set perl5lib = "/some/other/path"
[ $?PERL5LIB ] \
&& setenv PERL5LIB ${PERL5LIB}:${perl5lib} \
|| setenv PERL5LIB ${perl5lib}
如果未定义环境变量,请将其设置为空字符串。这样可以避免重复。
if ( ! $?PERL5LIB ) then
setenv PERL5LIB ""
else
setenv PERL5LIB "${PERL5LIB}:"
endif
setenv PERL5LIB ${PERL5LIB}/some/other/path
我正在尝试将路径附加到我的 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
由于缺少更好的答案,我将 post 对我的问题进行稍微改进的版本。以下至少消除了两次写出路径...
set perl5lib = "/some/other/path"
if ( $?PERL5LIB ) then
setenv PERL5LIB ${PERL5LIB}:${perl5lib}
else
setenv PERL5LIB ${perl5lib}
endif
虽然只是很微小的进步,但至少有所进步。
编辑:
从技术上讲,这可以缩短为:
set perl5lib = "/some/other/path"
[ $?PERL5LIB ] && setenv PERL5LIB ${PERL5LIB}:${perl5lib} || setenv PERL5LIB ${perl5lib}
不是最可读的,但我想这已经差不多了。
编辑 2:
可能更具可读性? ...我真的不知道。
set perl5lib = "/some/other/path"
[ $?PERL5LIB ] \
&& setenv PERL5LIB ${PERL5LIB}:${perl5lib} \
|| setenv PERL5LIB ${perl5lib}
如果未定义环境变量,请将其设置为空字符串。这样可以避免重复。
if ( ! $?PERL5LIB ) then
setenv PERL5LIB ""
else
setenv PERL5LIB "${PERL5LIB}:"
endif
setenv PERL5LIB ${PERL5LIB}/some/other/path