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
在 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