Подтвердить что ты не робот

Как smart добавить LD_LIBRARY_PATH в оболочку, когда nounset

В следующей оболочке ошибка показывает LD_LIBRARY_PATH: несвязанная переменная, если LD_LIBRARY_PATH не установлен.

Можно ли использовать подобное использование, например ${xxx: -yyy}, чтобы упростить его.

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

Ответ 1

Вы можете использовать эту конструкцию:

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 Expansion Expansion.

Это важная практика безопасности, как два соседних двоеточия или хвостовой/ведущий двоеточие, как добавление текущего каталога в $PATH или $LD_LIBRARY_PATH. См. Также: