Se trascorri molto tempo sulla riga di comando, è probabile che tu voglia personalizzare il tuo ambiente shell. Questo può significare creare alias, aggiungere una nuova directory a $PATH
o modificando l'aspetto del prompt della shell.
Potresti esserti imbattuto in alcuni tutorial in cui dicono di inserire la tua configurazione in .bashrc
, .bash_profile
o un altro file di configurazione che viene letto ed eseguito dalla shell bash.
In questo articolo parleremo dei file di avvio di Bash e della differenza tra .bashrc
e .bash_profile
file.
Accesso interattivo e shell senza accesso #
Quando viene richiamato, Bash legge ed esegue i comandi da una serie di file di avvio. Quali file vengono letti dipende dal fatto che la shell venga invocata come shell interattiva di accesso o non di accesso.
Una shell può essere interattiva o non interattiva.
In parole povere, una shell interattiva è una shell che legge e scrive sul terminale di un utente, mentre una shell non interattiva è una shell che non è associata a un terminale, come quando si esegue uno script.
Una shell interattiva può essere una shell di accesso o non di accesso.
Una shell di login viene invocata quando un utente accede al terminale da remoto tramite ssh o localmente, o quando Bash viene lanciato con --login
opzione. Una shell interattiva senza login viene invocata dalla shell di login, come quando si digita bash
nel prompt della shell o quando si apre una nuova scheda del terminale di Gnome.
File di avvio Bash #
Quando viene invocato come shell di accesso interattiva, Bash cerca il /etc/profile
file e, se il file esiste, esegue i comandi elencati nel file. Quindi Bash cerca ~/.bash_profile
, ~/.bash_login
e ~/.profile
file, nell'ordine elencato, ed esegue i comandi dal primo file leggibile trovato.
Quando Bash viene invocato come shell interattiva senza login, legge ed esegue comandi da ~/.bashrc
, se quel file esiste ed è leggibile.
Differenza tra .bashrc e .bash_profile #
.bash_profile
viene letto ed eseguito quando Bash viene invocato come shell di accesso interattiva, mentre .bashrc
viene eseguito per una shell interattiva senza login.
Usa .bash_profile
per eseguire comandi che dovrebbero essere eseguiti una sola volta, come la personalizzazione di $PATH
variabile di ambiente.
Inserisci i comandi che dovrebbero essere eseguiti ogni volta che avvii una nuova shell nel .bashrc
file. Ciò include alias e funzioni, prompt personalizzati, personalizzazioni della cronologia e così via.
Tipicamente, ~/.bash_profile
contiene righe come sotto quella sorgente .bashrc
file. Ciò significa che ogni volta che accedi al terminale, entrambi i file vengono letti ed eseguiti.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
La maggior parte delle distribuzioni Linux utilizza ~/.profile
invece di ~/.bash_profile
. Il ~/.profile
il file viene letto da tutte le shell, mentre ~/.bash_profile
solo da Bash.
Se sul tuo sistema non è presente alcun file di avvio, puoi crearlo.
Conclusione #
.bash_profile
e .bashrc
sono file contenenti comandi di shell che vengono eseguiti quando viene invocato Bash. .bash_profile
viene letto ed eseguito su shell di login interattive, mentre .bashrc
su shell non di accesso.
Consulta il manuale di Bash per ulteriori informazioni sui file di avvio di Bash.
Se hai domande o feedback, sentiti libero di lasciare un commento.