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.