GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la lecture du fichier Conf entre la connexion et le shell sans connexion ?

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.


Linux
  1. Quelle est la différence entre $(stuff) et `stuff` ?

  2. La différence entre une commande intégrée et une qui ne l'est pas ?

  3. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  4. Quelle est la différence entre /sbin/nologin et /bin/false ?

  5. La différence entre .exrc et .vimrc ?

La différence entre plus, moins et la plupart des commandes

Quelle est la différence entre la connexion et le shell sans connexion

Quelle est la différence entre une console, un terminal et un shell ?

Quelle est la différence entre nohup et esperluette

Quelle est la différence entre fsync et syncfs ?

Quelle est la différence entre &> et >&en bash ?