GNU/Linux >> Tutoriels Linux >  >> Linux

Séquence d'exécution pour .bash_profile, .bashrc, .bash_login, .profile et .bash_logout

Cet article explique la séquence dans laquelle les fichiers suivants sont exécutés :

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

Séquence d'exécution du shell de connexion interactif

Le pseudo code suivant explique la séquence d'exécution de ces fichiers.

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

Lorsque vous vous déconnectez du shell interactif, voici la séquence d'exécution :

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

Veuillez noter que /etc/bashrc est exécuté par ~/.bashrc comme indiqué ci-dessous :

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

Séquence d'exécution du shell interactif sans connexion

Lors du lancement d'un shell interactif sans connexion, voici la séquence d'exécution :

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

Remarque : Lorsqu'un shell non interactif démarre, il recherche la variable d'environnement ENV et exécute la valeur de nom de fichier mentionnée dans la variable ENV.

Tester la séquence d'exécution

L'une des façons de tester la séquence d'exécution consiste à ajouter différentes valeurs PS1 à ces fichiers et à vous reconnecter au shell et à voir quelle valeur PS1 a été récupérée par l'invite Linux. De plus, nous avons discuté plus tôt de la façon d'utiliser PS1 pour rendre votre invite Linux à la fois fonctionnelle et élégante.

1. /etc/profile est exécuté. Ajoutez la ligne PS1 suivante à /etc/profile et reconnectez-vous pour vous assurer que l'invite Linux passe à la valeur PS1 définie dans /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>

Veuillez vous assurer que ~/.bash_profile n'a pas de PS1 pour que ce qui précède fonctionne correctement.

2. ~/.bash_profile est exécuté : Ajoutez la PS1 suivante à ~/.bash_profile, ~/.bash_login, ~/.profile et ~/.bashrc. Reconnectez-vous pour vous assurer que l'invite Linux passe à la valeur PS1 définie dans ~/.bash_profile, comme indiqué ci-dessous.

/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 est exécuté. Renommez le .bash_profile en autre chose. Reconnectez-vous pour vous assurer que l'invite Linux passe à la valeur PS1 définie dans   ~/.bash_login, comme indiqué ci-dessous.

~/.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 est exécuté. Renommez le .bash_login en autre chose. Reconnectez-vous pour vous assurer que l'invite Linux passe à la valeur PS1 définie dans ~/.profile, comme indiqué ci-dessous.

~/.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 est exécuté pour les tests de shell sans connexion . Exécution de bash" à l'invite de commande donnera un autre shell sans connexion, qui invoquera .bashrc comme indiqué ci-dessous.

~/.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>


Si vous aimez cet article, veuillez le mettre en signet sur del.icio.us et Trébucher .


Linux
  1. Qu'est-ce que . Commande ~/.bashrc Faire ? ?

  2. Exemples de boucle Bash For et de boucle While

  3. Instructions d'exécution des scripts Shell pour les débutants

  4. Code pour malloc et gratuit

  5. Où est .bashrc pour root ?

Top 10 des distributions Linux pour ordinateur portable et de bureau

.bashrc contre .bash_profile

Guide d'installation et d'utilisation du pare-feu CSF

Comment sauvegarder et restaurer une carte SD pour Raspberry Pi

Interface ruban pour GTK et Qt

Est-ce que sudo et .profile/.bashrc permettent une élévation triviale des privilèges ?