Risposte:
Penso che la pagina wiki della community sulle variabili d'ambiente ti aiuterà a risolvere
Per aggiungere alla risposta di sagarchalise, posso riassumere ciò che il link suggerisce come luoghi appropriati per le impostazioni.
/etc/environment
/etc/profile
o/etc/bash.bashrc
Dalla pagina:
/etc/environment
[...] è specificamente progettato per le impostazioni delle variabili di ambiente a livello di sistema. Non è un file di script, ma consiste piuttosto di espressioni di assegnazione, una per riga. In particolare, questo file memorizza le impostazioni locali e del percorso a livello di sistema.
L'utilizzo /etc/profile
è un modo molto Unix-y di andare, ma la sua funzionalità è notevolmente ridotta in Ubuntu. Esiste solo per indicare /etc/bash.bashrc
e raccogliere le voci da /etc/profile.d
.
Sul mio sistema, l'unica voce interessante nel profilo.d è /etc/profile.d/bash_completion.sh
.
Si consiglia una versione precedente della pagina Ubuntu ~/.pam_environment
, ma la pagina attualmente suggerisce che se non funziona, è necessario utilizzare
~/.profile
- Questo è probabilmente il file migliore per l'inserimento delle assegnazioni delle variabili di ambiente, poiché viene eseguito automaticamente da DisplayManager durante la sessione desktop del processo di avvio, nonché dalla shell di accesso quando si accede dalla console testuale.
~/.bash_profile
oppure ~./bash_login
- Se esiste uno di questi, bash lo esegue invece che ~/.profile
quando bash viene avviato come shell di login. Bash preferirà ~/.bash_profile
a ~/.bash_login
. [...] Questi file non influenzeranno una sessione grafica per impostazione predefinita. "
~/.bashrc
- "... potrebbe essere il posto più semplice per impostare le variabili". /etc/environment
e quando? Non sembra funzionare con cron, anche quando si utilizzaSHELL=/bin/bash
/etc/environment
piacere JAVA_HOME="/opt/java"
e ANT_HOME="/opt/ant"
come farlo
Hai:
/ etc / profile: file .profile a livello di sistema per la shell Bourne (sh (1)) e shell compatibili Bourne (bash (1), ksh (1), ash (1), ...).
che in Lucid e Maverick corrono
/etc/profile.d/*.sh
se presente e se la shell dell'utente è bash:
/etc/bash.bashrc
Per l'ambiente utente, esiste un array confuso specifico per la shell e se è considerato una "shell di accesso". Se la shell è bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
per sh / dash:
$HOME/.profile
per zsh, non proverò nemmeno a dare un senso a questo .
Come raccomandato su https://help.ubuntu.com/community/EnvironmentVariables :
Le variabili d'ambiente globali che dovrebbero influenzare tutti gli utenti dovrebbero entrare /etc/environment
.
È necessario impostare le variabili di ambiente specifiche dell'utente ~/.pam_environment
.
Evita i file di profilo e rc per impostare le variabili di ambiente su Ubuntu. Mi hanno causato più mal di testa di quanto valessero.
Questo è più facile a dirsi che a farsi comunque;)
È possibile che tu possa imbatterti nello stesso gap di configurazione che esisteva per me. Vedi la soluzione alternativa per la casa crittografata di seguito.
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
Perché il brutto percorso statico? ${PATH}
non funzionerebbe per me. Ho bloccato il mio login diverse volte cercando di aggirare il problema, quindi mi attengo alla brutta copia statica delle impostazioni predefinite :)
Nelle versioni di Ubuntu fino a Precise 12.04 Beta 2 inclusa, se si utilizza una directory home crittografata, sarà necessario modificarla /etc/pam.d/common-session
per caricarla ~/.pam_environment
. Questa soluzione sembra funzionare per versioni precedenti, ma non l'ho testata.
Questo sembra essere un problema con le home directory crittografate. Ho aggiunto
sessione richiesta pam_env.so
alla fine di /etc/pam.d/common-session e ora viene letto ~ / .pam_environment. Su un altro sistema senza home directory crittografate (anche 10.04) non è necessario aggirare il problema. Forse nel mio caso il sistema prova a leggere ~ / .pam_environment prima che venga decifrato.
Adattato dalla mia risposta su Super User: https://superuser.com/a/408373/66856
${HOME}
non funzionerà neanche. Non c'è espansione in .pam_environment
.
.pam_environment
, ma di HOME
solito non è impostato così presto. Se quella riga avesse letto DEFAULT=${PATH}/Applications/jdk
, avresti visto il valore di PATH
inserito in essa.