Quali sono le differenze funzionali tra il .profile
, .bash_profile
ei .bashrc
file?
Quali sono le differenze funzionali tra il .profile
, .bash_profile
ei .bashrc
file?
Risposte:
.bash_profile
e .bashrc
sono specifici di bash
, mentre .profile
viene letto da molte shell in assenza dei propri file di configurazione specifici della shell. (è .profile
stato utilizzato dalla shell Bourne originale.) .bash_profile
o .profile
viene letto dalle shell di login, insieme a .bashrc
; subshells di sola lettura .bashrc
. (Tra il controllo del lavoro e i moderni sistemi di finestre, di .bashrc
per sé non viene molto usato. Se usi screen
o tmux
, gli schermi / finestre di solito eseguono subshells invece delle shell di login.)
L'idea alla base di ciò era che l'installazione una tantum veniva eseguita da .profile
(o una versione specifica della shell) e roba per shell da .bashrc
. Ad esempio, in genere si desidera caricare le variabili di ambiente solo una volta per sessione invece di farle sballare ogni volta che si avvia una subshell all'interno di una sessione, mentre si vogliono sempre i propri alias (che non vengono propagati automaticamente come le variabili di ambiente).
Altri notevoli file di configurazione della shell:
/etc/bash_profile
(fallback /etc/profile
) viene letto prima della .profile
configurazione dell'utente a livello di sistema e allo stesso modo /etc/bashrc
in subshells (nessun fallback per questo). Molti sistemi tra cui Ubuntu usano anche una /etc/profile.d
directory contenente scriptlet di shell, che sono .
( source
) derivati da /etc/profile
; i frammenti qui sono per shell, con l' *.sh
applicazione a tutte le shell compatibili Bourne / POSIX e altre estensioni che si applicano a quella particolare shell.
.profilo
.profile
è per cose che non sono specificamente correlate Bash
, come variabili di ambiente PATH
e amici, e dovrebbero essere disponibili in qualsiasi momento.
Ad esempio, .profile
dovrebbe essere caricato anche quando si avvia una sessione desktop grafica.
.bashrc
.bashrc
è per la configurazione dell'uso interattivo di Bash, come Bash aliases
, impostare il tuo preferito editor
, impostare il Bash prompt
, ecc.
.bash_profile
.bash_profile è per assicurarsi che sia le cose dentro .profile
che .bashrc
quelle caricate login shells
.
Ad esempio, .bash_profile
potrebbe essere qualcosa di semplice come
. ~/.profile
. ~/.bashrc
Se dovessi ometterlo .bashrc
, .profile
verrebbero caricati solo.
Secondo la pagina man di bash, .bash_profile
viene eseguito per shell di login, mentre .bashrc
viene eseguito per shell interattive non di login.
Quindi, cos'è una shell di login o non login?
Quando si accede (digitare nome utente e password) tramite console, sia seduto sulla macchina, sia da remoto tramite ssh: .bash_profile
viene eseguito per configurare la shell prima del prompt dei comandi iniziale. Ma, se hai già effettuato l'accesso al tuo computer e hai aperto una nuova finestra del terminale (xterm) all'interno di Gnome o KDE, .bashrc
viene eseguita prima del prompt dei comandi della finestra. .bashrc
viene eseguito anche quando si avvia una nuova istanza bash digitando /bin/bash
un terminale.
Un'eccezione alle linee guida della finestra del terminale è Terminal.app di Mac OS X, che per impostazione predefinita esegue una shell di accesso per ogni nuova finestra del terminale, chiamando .bash_profile
invece di .bashrc
. Altri emulatori di terminali GUI possono fare lo stesso, ma la maggior parte tende a non farlo.
Più qui .