bash with cómo agregar de forma inteligente LD_LIBRARY_PATH en shell cuando nounset



variable ld_library_path (1)

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 a export 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 a export 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:

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




shell