GNU/Linux >> Tutoriales Linux >  >> Linux

¿Agregar a la variable similar a una ruta sin crear dos puntos iniciales si no está configurado?

Necesito agregar un directorio a PKG_CONFIG_PATH . Normalmente, usaría el estándar

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig

pero PKG_CONFIG_PATH no se ha configurado previamente en mi sistema. Por lo tanto, la variable comienza con un : carácter, que le dice que busque primero en el directorio actual. No quiero eso. Me decidí por lo siguiente,

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$(pyenv prefix)/lib/pkgconfig

pero eso parece tan feo. ¿Hay una mejor manera? ¿Cuál es la forma adecuada de agregar condicionalmente los dos puntos si y solo si la variable ya se ha establecido?

Respuesta aceptada:

Estás en el camino correcto con el ${:+} operador de expansión, solo necesita modificarlo ligeramente:

V=${V:+${V}:}new_V

Las primeras llaves se expanden a $V y los dos puntos iff V ya está configurado en nada, que es exactamente lo que necesita (y probablemente también una de las razones de la existencia del operador).

Así en su caso:

export "PKG_CONFIG_PATH=${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}$(pyenv prefix)/lib/pkgconfig"

Linux
  1. ¿Necesito citar sustituciones de comandos al asignar su salida a una variable?

  2. ¿Crear variable usando valor de variable como parte del nuevo nombre de variable?

  3. Si los procesos heredan el entorno de los padres, ¿por qué necesitamos exportar?

  4. ¿Por qué la expansión variable sin $ funciona en expresiones?

  5. Ssh:¿necesito un Tty para ejecutar Sudo si puedo Sudo sin contraseña?

Variable de exportación de bash

Diferencia entre la definición de variables Bash con y sin exportación

Comando de exportación en Linux explicado

Definición de una variable con o sin exportación

¿Cómo exportar permanentemente una variable en Linux?

¿Crear archivo temporal frente a sustitución de procesos frente a expansión variable?