BASH Shell tentera de charger plusieurs fichiers de configuration lors de l'initialisation. Il existe 2 ensembles de fichiers de configuration, selon qu'il s'agit d'un shell de connexion ou d'un shell sans connexion.
- Lorsque vous vous connectez à un serveur sur un moniteur bare metal, ou via SSH, ou avec # su - [nom d'utilisateur], vous obtenez un shell de connexion.
- Lorsque vous démarrez un shell dans un terminal dans une session existante (gnome-terminal, un shell dans un autre, ou avec # su [nom d'utilisateur]…), vous obtenez un shell sans connexion. Un script shell est également exécuté sous un shell sans connexion.
Ci-dessous, nous illustrerons la différence en ajoutant un peu de débogage dans ces fichiers de configuration.
Interface de connexion
Par défaut, un shell de connexion chargera les fichiers suivants :
# su - test this is /etc/profile this is ~/.bash_profile this is ~/.bashrc this is /etc/bashrc
Notez ici le ~/.bash_profile file, le fichier par défaut appelle ~/.bashrc , et ~/.bashrc appelez /etc/bashrc .
Si pour une raison quelconque BASH ne trouve pas le fichier ~/.bash_profile, il recherchera ~/.bash_login Au lieu. Si à nouveau ~/.bash_login est introuvable, BASH recherchera ~/.profile à la place.
Et dans les 2 cas, ~/.bashrc et /etc/bashrc ne seront pas chargés, sauf s'ils ont été explicitement appelés dans ~/.bash_login ou ~/.profile.
Les exemples où ~/.bash_profile n'existe pas :
– Avec la présence de ~/.bash_login, peu importe que ~/.profile existe ou non :
$ su - test Password: this is /etc/profile This is ~/.bash_login
– Uniquement ~/.profile :
# su - test this is /etc/profile this is ~/.profile
Shell sans connexion
C'est plus simple, BASH ne charge que le ~/.bashrc, et encore une fois, l'appel de fichier /etc/bashrc.
# su test this is ~/.bashrc this is /etc/bashrc