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.