在以下shell中,如果未设置LD_LIBRARY_PATH,则错误显示 LD_LIBRARY_PATH:未绑定变量。
我可以使用类似$ {xxx:-yyy}的类似用法来简化它。
#!/bin/bash
set -o nounset
export LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
答案 0 :(得分:38)
你可以使用这个结构:
export LD_LIBRARY_PATH=/mypath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
说明:
如果未设置LD_LIBRARY_PATH
,则${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
会在不评估$LD_LIBRARY_PATH
的情况下扩展为空,因此结果等同于export LD_LIBRARY_PATH=/mypath
,并且不会引发错误。
如果已设置LD_LIBRARY_PATH
,则${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
会扩展为:$LD_LIBRARY_PATH
,因此结果相当于export LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
。
有关这些扩展的详细信息,请参阅Bash Reference Manual / 3.5.3 Shell Parameter Expansion。
这是一项重要的安全措施,因为两个相邻的冒号或一个尾随/前导冒号计算为将当前目录添加到$PATH
或$LD_LIBRARY_PATH
。另见: