GNU/Linux >> Linux Esercitazione >  >> Linux

Sequenza di esecuzione per .bash_profile, .bashrc, .bash_login, .profile e .bash_logout

Questo articolo spiegherà la sequenza in cui vengono eseguiti i seguenti file:

  • /etc/profilo
  • ~/.bash_profile
  • ~/.bashrc
  • ~/.bash_login
  • ~/.profile
  • ~/.bash_logout

Sequenza di esecuzione per shell di accesso interattiva

Il seguente pseudocodice spiega la sequenza di esecuzione di questi file.

execute /etc/profile
IF ~/.bash_profile exists THEN
    execute ~/.bash_profile
ELSE
    IF ~/.bash_login exist THEN
        execute ~/.bash_login
    ELSE
        IF ~/.profile exist THEN
            execute ~/.profile
        END IF
    END IF
END IF

Quando esci dalla shell interattiva, la sequenza di esecuzione è la seguente:

IF ~/.bash_logout exists THEN
    execute ~/.bash_logout
END IF

Si noti che /etc/bashrc viene eseguito da ~/.bashrc come mostrato di seguito:

# cat ~/.bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

Sequenza di esecuzione per shell interattiva senza login

Durante l'avvio di una shell interattiva senza login, la sequenza di esecuzione è la seguente:

IF ~/.bashrc exists THEN
    execute ~/.bashrc
END IF

Nota: Quando una shell non interattiva si avvia, cerca la variabile di ambiente ENV ed esegue il valore del nome file menzionato nella variabile ENV.

Verifica la sequenza di esecuzione

Uno dei modi per testare la sequenza di esecuzione è aggiungere diversi valori PS1 a questi file e accedere nuovamente alla shell e vedere quale valore PS1 è stato rilevato dal prompt di Linux. Inoltre, in precedenza abbiamo discusso su come utilizzare PS1 per rendere il tuo prompt Linux funzionale ed elegante.

1. /etc/profile viene eseguito. Aggiungi la seguente riga PS1 a /etc/profile ed esegui nuovamente il login per assicurarti che il prompt di Linux cambi nel valore PS1 impostato all'interno di /etc/profile.

# grep PS1 /etc/profile
PS1="/etc/profile> "

[Note: re-login to see the prompt change as shown below]
Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2
/etc/profile>

Assicurati che ~/.bash_profile non abbia alcuna PS1 affinché quanto sopra funzioni correttamente.

2. ~/.bash_profile viene eseguito: Aggiungi la seguente PS1 a ~/.bash_profile, ~/.bash_login, ~/.profile e ~/.bashrc. Accedi di nuovo per assicurarti che il prompt di Linux cambi al valore PS1 impostato all'interno di ~/.bash_profile come mostrato di seguito.

/etc/profile> grep PS1 ~/.bash_profile
export PS1="~/.bash_profile> "

/etc/profile> grep PS1 ~/.bash_login
export PS1="~/.bash_login> "

/etc/profile> grep PS1 ~/.profile
export PS1="~/.profile> "

/etc/profile> grep PS1 ~/.bashrc
export PS1="~/.bashrc> "

[Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next.
So, it took the PS1 from ~/.bash_profile as shown below.
It also did not execute ~/.bash_login, as ~/.bash_profile exists]
Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2
~/.bash_profile>

3. ~/.bash_login viene eseguito. Rinomina il .bash_profile in qualcos'altro. Accedi di nuovo per assicurarti che il prompt di Linux cambi al valore PS1 impostato all'interno di ~/.bash_login come mostrato di seguito.

~/.bash_profile> mv .bash_profile bash_profile_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile, it executed ~/.bash_login]
Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2
~/bash_login>

4. ~/.profile viene eseguito. Rinomina il .bash_login in qualcos'altro. Accedi di nuovo per assicurarti che il prompt di Linux cambi al valore PS1 impostato all'interno del ~/.profile come mostrato di seguito.

~/.bash_login> mv .bash_login bash_login_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile]
Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2
~/.profile>

5. ~/.bashrc viene eseguito per il test della shell non di accesso . Esecuzione di bash" al prompt dei comandi fornirà un'altra shell non di accesso, che invocherà .bashrc come mostrato di seguito.

~/.profile> bash

[Note: This displays PS1 from .bashrc as shown below.]
~/.bashrc> exit
exit

[Note: After exiting from non-login shell, we are back to login shell]
~/.profile>


Se ti piace questo articolo, aggiungilo ai preferiti su del.icio.us e Inciampalo .


Linux
  1. La differenza tra ~/.profile e ~/.bash_profile?

  2. Cosa fa . ~/.bashrc Comando Fare??

  3. Codice per malloc e gratuito

  4. Dov'è .bashrc per root?

  5. Colore diverso per comando e output

Le 10 migliori distribuzioni Linux per laptop e desktop

.bashrc vs .bash_profile

Guida all'installazione e all'uso del firewall CSF

Come eseguire il backup e il ripristino della scheda SD per Raspberry Pi

Interfaccia a nastro per GTK e Qt

sudo e .profile/.bashrc consentono una banale escalation dei privilegi?