bash - variable - ld_library_path windows
cómo agregar de forma inteligente LD_LIBRARY_PATH en shell cuando nounset (1)
En el siguiente shell, el error muestra LD_LIBRARY_PATH: variable no unida si el LD_LIBRARY_PATH no está establecido.
¿Puedo usar un uso similar como $ {xxx: -yyy} para simplificarlo?
#!/bin/bash
set -o nounset
export LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
Podrías usar este constructo:
export LD_LIBRARY_PATH=/mypath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
Explicación:
Si
LD_LIBRARY_PATH
no está establecido, entonces${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
expande a nada sin evaluar$LD_LIBRARY_PATH
, por lo tanto, el resultado es equivalente aexport LD_LIBRARY_PATH=/mypath
y no se produce ningún error.Si
LD_LIBRARY_PATH
ya está establecido, entonces${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
expande a:$LD_LIBRARY_PATH
, por lo tanto, el resultado es equivalente aexport LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
.
Consulte el Manual de referencia de Bash / 3.5.3 Expansión de parámetros de shell para obtener más información sobre estas expansiones.
Esta es una práctica de seguridad importante, ya que dos colones adyacentes o un recuento de dos puntos al final / al frente agregan el directorio actual a $PATH
o $LD_LIBRARY_PATH
. Ver también: