Dove dichiarare le variabili d'ambiente?

53

Quali sono i posti corretti per:

  1. Le variabili di ambiente globali hanno lo scopo di influenzare tutti gli utenti?
  2. Variabili d'ambiente specifiche per l'utente?
posta Ivan 24.09.2010 - 05:39

4 risposte

15

Penso che questo ti aiuterà a risolvere

    
risposta data sagarchalise 24.09.2010 - 05:49
70

Per aggiungere alla risposta di sagarchalise, posso riassumere ciò che il link suggerisce come luoghi appropriati per le impostazioni.

Per le impostazioni globali, variabili di ambiente a livello di sistema

  • Utilizza /etc/environment
  • Non utilizzare /etc/profile o /etc/bash.bashrc

Dalla pagina:

  

/etc/environment [...] è   specificamente inteso per l'intero sistema   impostazioni delle variabili d'ambiente. È   non un file di script, ma piuttosto consiste   di espressioni di assegnazione, una per   linea. In particolare, questo file memorizza   il locale e il percorso del sistema   impostazioni.

Usare /etc/profile è un modo molto Unix-y, ma la sua funzionalità è notevolmente ridotta in Ubuntu. Esiste solo per puntare a /etc/bash.bashrc e per raccogliere voci da /etc/profile.d .

Sul mio sistema, l'unica voce interessante di profile.d è /etc/profile.d/bash_completion.sh .

Per impostazioni locali o per utente

Una versione precedente della pagina di Ubuntu raccomandava ~/.pam_environment , ma la pagina suggerisce attualmente che se ciò non funziona, dovresti usare

  •   

    ~/.profile - Questo è probabilmente il   miglior file per collocare l'ambiente   assegnazioni variabili in, dal momento che ottiene   eseguito automaticamente dal   DisplayManager durante l'avvio   processo di sessione desktop e da   la shell di login quando si accede da   la console testuale.

  • ~/.bash_profile o ~./bash_login - Se uno di questi esiste, bash lo esegue anziché ~/.profile quando bash viene avviato come shell di login. Bash preferirà ~/.bash_profile a ~/.bash_login . [...] Questi file non influenzeranno automaticamente una sessione grafica. "

  • ~/.bashrc - "... potrebbe essere il posto più facile per impostare le variabili".
risposta data belacqua 14.02.2011 - 22:32
7

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 and Maverick corrono

/etc/profile.d/*.sh

se presente e se la shell dell'utente è bash:

/etc/bash.bashrc

Per l'ambiente utente, c'è una matrice confusa specifica per la shell e se è considerata una "shell di login". Se la shell è bash:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

per sh / trattino:

$HOME/.profile

per zsh, non ho intenzione di provare per dare un senso a questo .

    
risposta data msw 24.09.2010 - 05:53
5

Come consigliato sul link :

  1. Le variabili di ambiente globali destinate a influenzare tutti gli utenti dovrebbero andare in /etc/environment .

  2. Le variabili d'ambiente specifiche per l'utente devono essere impostate in ~/.pam_environment .

Evita il profilo e i file rc per impostare le variabili d'ambiente su Ubuntu. Mi hanno causato più mal di testa di quanto valga.

Questo è più facile a dirsi che a farsi comunque;)

È possibile che tu possa incappare nella stessa lacuna di configurazione che esisteva per me. Vedi la soluzione alternativa per la casa criptata qui sotto.

Il mio ~/.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 fatto il login più volte cercando di aggirarlo, quindi mi sto attaccando alla brutta copia statica dei valori predefiniti:)

Soluzione alternativa per cartelle home crittografate

Nelle versioni di Ubuntu fino a Precision 12.04 Beta 2 incluso, se si utilizza una directory home crittografata, sarà necessario modificare /etc/pam.d/common-session per caricare ~/.pam_environment . Questa soluzione sembra funzionare per versioni precedenti, ma non l'ho ancora testata.

Guenther Montag (g-montag ) ha scritto il 2010-08-19:

  

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 ~ / .pam_environment viene letto. Su un altro sistema senza directory home crittografate (anche 10.04) il lavoro non è necessario. Forse nel mio caso il sistema prova a leggere ~ / .pam_environment prima che sia decodificato.

Adattato dalla mia risposta su Super User: link

    
risposta data Alain O'Dea 04.04.2012 - 06:16

Leggi altre domande sui tag