Fare riferimento alle variabili di ambiente * in * / etc / environment?


19

Recentemente ho scoperto /etc/environment, che sembra un modo più standard per impostare variabili d'ambiente semplici rispetto agli script, ma mi chiedevo se ci fosse un modo per fare il riferimento alle variabili d'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/binalla definizione PATH, tuttavia, ottengo $ JAVA_HOME / bin e non la variabile interpolata. Per rimediare a ciò, sto creando environment.sh in profile.d per aggiungere le /binvoci al percorso, ma questo sembra sciatto e disorganizzato.

C'è un modo per riportare indietro le variabili di ambiente in / etc / environment?

Risposte:


13

Il /etc/environmentfile viene letto dal pam_envmodulo PAM . Supporta solo coppie chiave-valore semplici, senza sostituzione sul lato destro.

Se si desidera creare il valore con sostituzioni o altre espansioni della shell, è necessario 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 certamente non c'è nulla di sciatto nell'usarlo. Il vantaggio principale /etc/environmentè che consente di impostare le variabili di ambiente anche con metodi di accesso che non prevedono una shell o per gli utenti che usano una shell non Bourne, ma questi non sono comuni nella pratica.


Senza sostituzione, si finisce con molti licenziamenti in /etc/environment, ho fatto ricorso /etc/profile, grazie per il tuo suggerimento.
SAFX,

2

La documentazione di Ubuntu sembra impossibile. MA c'è una risposta.

RISPOSTA : creare variabili di ambiente persistenti a livello di sistema in/etc/.bashrc

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

Dettagli:
ecco alcuni dettagli dalla documentazione sulle variabili d'ambiente .
La raccomandazione ufficiale è di usare /etc/environment, come hai provato. Il problema è che questo file non è un file di script. In altre parole, non è possibile utilizzare le variabili nelle dichiarazioni delle variabili.

La documentazione continua con altri 2 file "Non consigliati"
/etc/profilee /etc/bash.bashrc.

/etc/profile"fa poco più che invocare il file /etc/bash.bashrc". Quindi invece scegli

/etc/bash.bashrc perché "Ubuntu è configurato di default per eseguire questo file ogni volta che un utente entra in una shell o nell'ambiente desktop".


Ho aggiornato EnvironmentVariables in consultazione con alcuni sviluppatori Ubuntu, quindi quelle dichiarazioni "non consigliate" non ci sono più.
Gunnar Hjalmarsson,

"ogni volta che un utente entra in una shell". cosa devo fare quando non c'è nessun utente per inserire una shell? Ho bisogno di variabili d'ambiente per i miei utenti automatizzati che eseguono software all'avvio. Ad esempio, ho solo 6 righe di configurazione proxy. Cosa dovrei farci?
eis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.