BASH Shell tenterà di caricare diversi file di configurazione durante l'inizializzazione. Esistono 2 set di file di configurazione, a seconda che si tratti di una shell di accesso o di una shell non di accesso.
- Quando accedi a un server su un monitor bare metal, o tramite SSH, o con # su – [nome utente], ottieni una shell di accesso.
- Quando avvii una shell in un terminale in una sessione esistente (gnome-terminal, una shell all'interno di un'altra, o con # su [nome utente]…), ottieni una shell senza login. Uno script di shell viene eseguito anche in una shell non di accesso.
Di seguito illustreremo la differenza aggiungendo un po' di debug in quei file di configurazione.
Shell di accesso
Per impostazione predefinita, una shell di accesso caricherà i seguenti file:
# su - test this is /etc/profile this is ~/.bash_profile this is ~/.bashrc this is /etc/bashrc
Qui nota il ~/.bash_profile file, il file per impostazione predefinita chiama ~/.bashrc e ~/.bashrc chiama /etc/bashrc .
Se per qualche motivo BASH non trova il file ~/.bash_profile, cercherà ~/.bash_login invece. Se di nuovo non è possibile trovare ~/.bash_login, BASH cercherà ~/.profile invece.
E nei 2 casi, ~/.bashrc e /etc/bashrc non verranno caricati, a meno che non siano stati esplicitamente chiamati in ~/.bash_login o ~/.profile.
Gli esempi quando ~/.bash_profile non esiste:
– Con la presenza di ~/.bash_login, non importa che ~/.profile esista o meno:
$ su - test Password: this is /etc/profile This is ~/.bash_login
– Solo ~/.profile:
# su - test this is /etc/profile this is ~/.profile
Shell senza accesso
È più semplice, BASH carica solo ~/.bashrc e, di nuovo, il file chiama /etc/bashrc.
# su test this is ~/.bashrc this is /etc/bashrc