如何智能在名词集中在shell中附加LD_LIBRARY_PATH

时间:2012-03-09 08:53:19

标签: bash shell

在以下shell中,如果未设置LD_LIBRARY_PATH,则错误显示 LD_LIBRARY_PATH:未绑定变量

我可以使用类似$ {xxx:-yyy}的类似用法来简化它。

#!/bin/bash
set -o nounset
export LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH

1 个答案:

答案 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。另见: