Recentemente ho scoperto /etc/environment
, che sembra un modo più standard per impostare semplici variabili di ambiente rispetto agli script, ma mi chiedevo se esistesse un modo per fare riferimento a variabili di ambiente nel file /etc/environment.
Cioè, ho questo:
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"
Se provo ad aggiungere $JAVA_HOME/bin
alla definizione PATH, tuttavia, ottengo $JAVA_HOME/bin e non la variabile interpolata. Per rimediare, sto creando environment.sh in profile.d per aggiungere il /bin
voci al percorso, ma questo sembra sciatto e disorganizzato.
C'è un modo per fare riferimento alle variabili di ambiente in /etc/environment?
Migliore risposta
Il /etc/environment
il file viene letto da pam_env
modulo PAM. Supporta solo semplici coppie chiave-valore, senza alcuna sostituzione sul lato destro.
Se vuoi costruire il valore con sostituzioni o altre espansioni della shell, devi passare attraverso una shell. /etc/profile
(o un file in /etc/profile.d
) è il posto giusto per questi. Questo è il luogo tradizionale (/etc/environment
è un'innovazione relativamente recente, nella storia dei sistemi Unix), e non c'è certamente niente di sciatto nell'usarla. Il principale vantaggio di /etc/environment
è che permette di impostare variabili d'ambiente anche con metodi di login che non coinvolgono una shell o per utenti che usano una shell non Bourne, ma questi non sono nella pratica comuni.