You could use this construct:
export LD_LIBRARY_PATH=/mypath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
Explanation:
-
If
LD_LIBRARY_PATH
is not set, then${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
expands to nothing without evaluating$LD_LIBRARY_PATH
, thus the result is equivalent toexport LD_LIBRARY_PATH=/mypath
and no error is raised. -
If
LD_LIBRARY_PATH
is already set, then${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
expands to:$LD_LIBRARY_PATH
, thus the result is equivalent toexport LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
.
See the Bash Reference Manual / 3.5.3 Shell Parameter Expansion for more information on these expansions.
This is an important security practice as two adjacent colons or a trailing/leading colon count as adding the current directory to $PATH
or $LD_LIBRARY_PATH
. See also:
- What corner cases must we consider when parsing path on linux
- bash: $PATH ending in colon puts working directory in PATH
- How Torch broke ls