gpt4 book ai didi

bash - 如何在 nounset 时在 shell 中智能附加 LD_LIBRARY_PATH

转载 作者:行者123 更新时间:2023-11-29 08:45:10 24 4
gpt4 key购买 nike

在以下 shell 中,如果未设置 LD_LIBRARY_PATH,则错误显示 LD_LIBRARY_PATH: unbound variable

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

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

最佳答案

你可以使用这个结构:

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

关于bash - 如何在 nounset 时在 shell 中智能附加 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com