Referenciando variables de entorno * en * / etc / environment?

18

Recientemente descubrí /etc/environment , que parece ser una forma más estándar de configurar variables de entorno simples que las secuencias de comandos, pero me preguntaba si había alguna forma de retroceder las variables de entorno en el archivo / etc / environment.

Es decir, tengo esto:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Si intento agregar $JAVA_HOME/bin a la definición PATH, sin embargo, obtengo $ JAVA_HOME / bin, y no la variable interpolada. Para remediar esto, estoy creando environment.sh en profile.d para agregar las entradas /bin a la ruta, pero esto parece descuidado y desorganizado.

¿Hay alguna manera de retroceder las variables de entorno en / etc / environment?

    
pregunta Stefan Kendall 13.11.2011 - 16:38

2 respuestas

12

El archivo /etc/environment es leído por el pam_env módulo PAM . Solo admite pares clave-valor simples, sin sustitución en el lado derecho.

Si quiere construir el valor con sustituciones u otras expansiones de caparazón, debe pasar por un caparazón. /etc/profile (o un archivo en /etc/profile.d ) es el lugar correcto para estos. Este es el lugar tradicional ( /etc/environment es una innovación relativamente reciente, en la historia de los sistemas Unix), y ciertamente no hay nada descuidado en su uso. El principal beneficio de /etc/environment es que permite establecer variables de entorno incluso con métodos de inicio de sesión que no involucran un shell o para usuarios que usan un shell que no es de Bourne, pero estos no son comunes en la práctica.

    
respondido por el Gilles 13.11.2011 - 17:10
2

La documentación de Ubuntu hace que esto parezca imposible. PERO, hay una respuesta.

RESPUESTA : crea variables de entorno persistentes de todo el sistema en /etc/.bashrc

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

Detalles:
Aquí hay más detalles de la documentación de variables de entorno .
La recomendación oficial es usar /etc/environment , como lo has intentado. El problema es que este archivo no es un archivo de script. En otras palabras, no puede usar variables en declaraciones de variables.

La documentación continúa con otros 2 archivos "No recomendado"
/etc/profile y /etc/bash.bashrc .

/etc/profile "hace poco más que invocar el archivo /etc/bash.bashrc". Entonces, en lugar de elegir

/etc/bash.bashrc porque "Ubuntu está configurado de forma predeterminada para ejecutar este archivo cada vez que un usuario ingresa un shell o el entorno de escritorio".

    
respondido por el csi 02.12.2013 - 15:59

Lea otras preguntas en las etiquetas