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

Dan*_*Lin 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
Run Code Online (Sandbox Code Playgroud)

Chr*_*n.K 43

你可以使用这个结构:

export LD_LIBRARY_PATH=/mypath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
Run Code Online (Sandbox Code Playgroud)

说明:

  • 如果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参考手册/ 3.5.3 Shell参数扩展.

这是一个重要的安全做法,因为两个相邻的冒号或一个尾随/前导冒号计算为将当前目录添加到$PATH$LD_LIBRARY_PATH.也可以看看: