Quali sono le differenze funzionali tra .profile .bash_profile e .bashrc


Risposte:


151

.bash_profilee .bashrcsono specifici di bash, mentre .profileviene letto da molte shell in assenza dei propri file di configurazione specifici della shell. (è .profilestato utilizzato dalla shell Bourne originale.) .bash_profileo .profileviene 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 .bashrcper sé non viene molto usato. Se usi screeno 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 .profileconfigurazione dell'utente a livello di sistema e allo stesso modo /etc/bashrcin subshells (nessun fallback per questo). Molti sistemi tra cui Ubuntu usano anche una /etc/profile.ddirectory contenente scriptlet di shell, che sono .( source) derivati ​​da /etc/profile; i frammenti qui sono per shell, con l' *.shapplicazione a tutte le shell compatibili Bourne / POSIX e altre estensioni che si applicano a quella particolare shell.


58

.profilo

.profileè per cose che non sono specificamente correlate Bash, come variabili di ambiente PATHe amici, e dovrebbero essere disponibili in qualsiasi momento.

Ad esempio, .profiledovrebbe 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 .profileche .bashrcquelle caricate login shells.

Ad esempio, .bash_profilepotrebbe essere qualcosa di semplice come

. ~/.profile
. ~/.bashrc

Se dovessi ometterlo .bashrc, .profileverrebbero caricati solo.


1
Questo ha risposto alla mia domanda per Mac OS X
Jake Toronto,

38

Secondo la pagina man di bash, .bash_profileviene eseguito per shell di login, mentre .bashrcviene 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_profileviene 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, .bashrcviene eseguita prima del prompt dei comandi della finestra. .bashrcviene eseguito anche quando si avvia una nuova istanza bash digitando /bin/bashun 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_profileinvece di .bashrc. Altri emulatori di terminali GUI possono fare lo stesso, ma la maggior parte tende a non farlo.

Più qui .

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.