Ho letto in un paio di punti che il PATH
è impostato in /etc/profile
o il .profile
file che si trova nella home directory.
Sono questi gli unici luoghi in cui è impostato il percorso? Voglio una migliore comprensione.
Nel /etc/profile
file, come dice il commento seguente "system-wide .profile file for the Bourne shell"
. Significa che i file di profilo sono i principali file di configurazione per bash?
In quel file non vedo il PATH
var essendo impostato affatto. Nel .profile
file nella home directory c'è questa riga:
PATH="$HOME/bin:$PATH"
Questo è il ripristino di PATH
dagli sguardi perché sta concatenando il già impostato $PATH
stringa con $HOME/bin:
giusto? Ma se etc/profile
e ~/.profile
sono gli unici file che impostano PATH
dove è $PATH
proveniente da quella riga di codice se non è definita in /etc/profile
?
Qualcuno esperto può fornire una spiegazione ampia e dettagliata del PATH
variabile? Grazie!
Risposta accettata:
Ci sono molti posti in cui PATH
può essere impostato.
Il login
programma lo imposta su un valore predefinito. La modalità di configurazione di questo valore predefinito dipende dal sistema. Sulla maggior parte dei sistemi Linux non embedded, è preso da /etc/login.defs
, con valori diversi per root e per altri utenti. Consulta il login(1)
manuale sul tuo sistema per scoprire cosa fa.
Sui sistemi che utilizzano PAM, in particolare pam_env
modulo, le variabili di ambiente possono essere impostate nel file a livello di sistema /etc/environment
e il file per utente ~/.pam_environment
.
Quindi la maggior parte dei modi per accedere (ma non i lavori cron) eseguono una shell di accesso che legge i file di configurazione a livello di sistema e per utente. Questi file possono modificare il valore di PATH
, in genere per aggiungere voci ma a volte in altri modi. Quali file vengono letti dipendono da quale sia la shell di accesso. Le shell in stile Bourne/POSIX leggono /etc/profile
e ~/.profile
. Bash legge /etc/profile
, ma per il file per utente legge solo il primo file esistente tra ~/.bash_profile
, ~/.bash_login
e ~/.profile
. Zsh legge /etc/zshenv
, ~/.zshenv
, /etc/zprofile
, ~/.zprofile
, /etc/zlogin
e ~/.zlogin
. Molte sessioni della GUI organizzano il caricamento di /etc/profile
e ~/.profile
, ma questo dipende dal display manager, dall'ambiente desktop o da altri script di avvio della sessione e da come ogni distribuzione li ha impostati.