J'ai trouvé que ce sont .bash_profile
, .bashrc
, .bash_login
, .profile
.
Quelle est la séquence de lecture entre eux ?
Réponse acceptée :
Fondamentalement, s'il s'agit d'un shell de connexion, il source /etc/profile
puis .bash_profile
. Si ce n'est pas un shell de connexion, mais que vous êtes sur un terminal, il source /etc/bash.bashrc
puis .bashrc
.
Mais c'est en fait beaucoup plus compliqué.
La façon dont je lis la page de manuel :
if bash_mode; then
if login_shell; then
if test -e /etc/profile; then source /etc/profile; fi
if test -e .bash_profile; then source .bash_profile
elif test -e .bash_login; then source .bash_login
elif test -e .profile; then source .profile; fi
elif interactive_shell || remote_shell; then
if test -e /etc/bash.bashrc; then source /etc/bash.bashrc
if test -e .bashrc; then source .bashrc; fi
elif test -n "$BASH_ENV"; then
source "$BASH_ENV"
fi
elif sh_mode; then
if login_shell; then
if test -e /etc/profile; then source /etc/profile; fi
if test -e .profile; then source .profile; fi
elif interactive_shell; then
if test -n "$ENV"; then
source "$ENV"
fi
fi
fi
C'est un shell de connexion chaque fois que le shell est exécuté en tant que -bash
(notez le signe moins) ou avec le -l
option. Cela se produit généralement lorsque vous vous connectez en utilisant le login
commande (les consoles virtuelles Linux le font), via ssh, ou si votre émulateur de terminal a l'option "login shell" activée.
C'est un shell interactif chaque fois que l'entrée standard est un terminal ou que bash a été démarré avec le -i
option. Notez que si le shell est également un shell de connexion, bash ne vérifie pas si le shell est interactif. Pour cette raison, .bash_profile
contient généralement du code vers la source .bashrc
, afin que vous puissiez partager les mêmes paramètres entre les shells interactifs et de connexion.