Pregunta ¿Puedes usar variables cuando editas / etc / environment en ubuntu 10.04?


Estoy tratando de introducir una variable y agregarla a la ruta global en ubuntu 10.04. De acuerdo con la documentos oficiales, / etc / environment es el lugar correcto. Así es como se ve mi ejemplo:

GRADLE_HOME=/etc/gradle-0.9-preview-3
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$GRADLE_HOME/bin"

La variable GRADLE_HOME se agrega al entorno, pero no interpreta la variable $ GRADLE_HOME durante la asignación PATH. La codificación dura funciona bien. No es un gran problema, pero me gustaría saber si se admite la sustitución de variables o si hay una mejor manera de hacerlo. ¡Gracias!


5
2017-07-29 16:39


origen




Respuestas:


Esta explicación de una publicación relacionada parece proporcionar la respuesta:

Porque / etc / environment no es un   shell script. Es la concha que   hace expansión del medio ambiente   variables El módulo pAM pam_env es   Lo que lee / etc / medio ambiente - y   Lo trata como una simple lista de KEY = VAL   Parejas y configura el entorno.   en consecuencia. No tiene lenguaje para   haciendo expansión variable.


4
2017-09-01 16:17



así que, en resumen, solo usa / etc / profile :) - Filipe Pina
No, solo significa que la sustitución de variables no funciona al editar el perfil global. / etc / profile es una ubicación de entorno por usuario. A veces realmente desea editar la configuración del entorno global. - Dan
/ etc / profile es por usuario ...? ¿Un archivo por usuario en / etc? La última vez que revisé / etc / profile es el archivo ~ / .profile de todo el sistema. ~ / .profile es la ubicación por usuario. - Filipe Pina
Lo siento - malinterpreta tu comentario. Creo que / etc / profile es solo para shells interactivos, y también necesitaba manejar shells no interactivos. - Dan


Lea la página de manual de pam_env.conf (5).

Creo que necesitas agregar llaves alrededor del nombre de la variable en el lado derecho:

GRADLE_HOME=/etc/gradle-0.9-preview-3
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${GRADLE_HOME}/bin"

Ambiente (posiblemente inexistente)   Las variables pueden ser utilizadas en valores usando   la sintaxis $ {string} y (posiblemente   no existente) PAM_ITEMs puede ser usado en   valores utilizando la sintaxis @ {string}.   Tanto los caracteres $ como @ pueden ser   Backslash escapó para ser utilizado como   Los valores literales pueden ser delimitados.   con "", escapado "no es compatible. Nota   que muchas variables de entorno que   le gustaría usar no puede ser configurado   en el momento en que se llama el módulo. por   ejemplo, HOME se usa debajo de varios   veces, pero muchas aplicaciones PAM no   Ponlo a tu disposición para cuando lo necesites.   eso.


1
2017-07-29 16:54



Gracias, pero esto no funcionó en mi entorno (servidor 10.04 de 32 bits). Mismo efecto, donde parece tratar el valor como un literal. - Dan
También probé esto y no funcionó. - benmccann