Introduzione
Se passi molto tempo sulla riga di comando, è probabile che tu voglia personalizzare il tuo ambiente shell. Ciò può significare la creazione di alias, l' aggiunta di una nuova directory al $PATH
o la modifica dell'aspetto del prompt della shell.
Potresti esserti imbattuto in alcuni tutorial in cui viene suggerito di inserire la tua configurazione personale nel file .bashrc
, o nel file .bash_profile
o in 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 i file .bashrc
e .bash_profile
.
Login Interattivo e Non-Login
Quando viene invocato, Bash legge ed esegue i comandi da una serie di file di avvio. Quali file vengono letti dipende dal fatto che la shell sia invocata come shell di accesso interattivo (interactive login) o non di accesso (non-login).
Una shell può essere interattiva o non interattiva.
In termini semplici, 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 shell di login o non login.
Una shell di accesso viene invocata quando un utente accede al terminale in remoto tramite ssh o localmente o quando Bash viene avviato con l'opzione --login
. Una shell interattiva non-login viene invocata dalla shell di accesso, ad esempio quando si digita bash
nel prompt della shell o quando si apre una nuova scheda del terminale Gnome.
Bash Startup Files
Quando viene richiamato come shell di login interattiva, Bash cerca il file /etc/profile
e, se il file esiste, esegue i comandi elencati nel file. Successivamente Bash ricerca i file ~/.bash_profile
, ~/.bash_login
e ~/.profile
, nell'ordine indicato, ed esegue i comandidal primo file leggibile trovato.
Quando Bash viene invocato come shell interattiva non-login, legge ed esegue i 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 non-login.
Utilizzare .bash_profile
per eseguire comandi che dovrebbero essere eseguiti una sola volta, come la personalizzazione della variabile di ambiente $PATH
.
Inserisci i comandi che dovrebbero essere eseguiti ogni volta che avvii una nuova shell nel file .bashrc
. Ciò include alias e funzioni, prompt personalizzati e così via.
In genere, ~/.bash_profile
contiene le seguenti righe come il file .bashrc
. 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 file ~/.profile
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 shell che vengono eseguiti quando viene richiamato Bash. .bash_profile
viene letto ed eseguito su shell di login interattive, mentre .bashrc
su shell non-login.
Consultare il manuale di Bash per ulteriori informazioni sui file di avvio di Bash.