tcsh 等同于 bash 的未设置变量感知“+”参数替换命令?

tcsh equivalent to bash's unset-variable aware '+' parameter substitution command?

在 bash 中设置路径时,我被教导使用 plus sign command 备用值参数替换,以稳健地应对尚未设置变量的情况。

export LD_LIBRARY_PATH="/new/libray/path/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

这样,如果 LD_LIBRARY_PATH 已设置,则 LD_LIBRARY_PATH 环境变量设置为 /new/libray/path/:$LD_LIBRARY_PATH,如果未设置,则设置为 /new/libray/path/。 (这在公共路径变量中不太重要,但在处理特定于程序的路径变量时很有帮助,例如 $PYTHONPATH。)

不幸的是,我现在需要使用 tcsh 而不是 bash。在 tcsh 中,这个 bash 结构是否有一个好的替代方案?也就是说,将 LD_LIBRARY_PATH 设置为的最佳方法是什么 /new/libray/path/:$LD_LIBRARY_PATH 如果 LD_LIBRARY_PATH 已经设置,如果没有设置为 /new/libray/path/(不引发错误)?

没有这样的功能。您必须使用 if:

测试变量是否存在
if ( $?LD_LIBRARY_PATH ) then
    setenv LD_LIBRARY_PATH /new/libray/path/:$LD_LIBRARY_PATH
else
    setenv LD_LIBRARY_PATH /new/libray/path/
endif