J'utilise "Red Hat Enterprise Linux Server version 7.1 (Maipo)".
Lorsque je suis dans un shell sans connexion, le niveau de shell minimum (echo $SHLVL) commence au niveau minimum 2 et augmente avec les sous-marins successifs -shells.
Mais lorsque j'utilise un login-shell, le niveau minimum du shell (echo $SHLVL) commence au niveau minimum 2 du shell et augmente avec les sous-shells successifs.
[Qué.] Pourquoi y a-t-il une différence de niveau de shell minimum entre le shell de connexion (commence au niveau 1 minimum du shell) et le shell sans connexion (commence au niveau 2 minimum du shell) ?
J'utilise bash.
Réponse acceptée :
À partir de la page de manuel bash :
SHLVL Incrémenté de un à chaque démarrage d'une instance de bash.
Comme vous le voyez, cette variable n'a aucun rapport avec le fait qu'il s'agisse d'un shell de connexion ou non. Cela signifie simplement que votre shell bash a été lancé par un autre shell bash. Comme nous ne savons pas exactement ce que vous faites pour obtenir votre shell, je ne peux pas dire pourquoi vous avez un appel de shell imbriqué, mais voici quelques cas courants :
-
Vous démarrez une nouvelle fenêtre de terminal à partir de la ligne de commande
-
Vous utilisez une fonctionnalité du système d'exploitation pour démarrer une nouvelle fenêtre de terminal, et cette fonctionnalité est implémentée en démarrant d'abord un bash qui exécute ensuite le terminal qui à son tour exécute un nouveau shell
-
Vous avez un
bash
récursif appelez votre .bash_profile qui est exécuté chaque fois que SHLVL est égal à 1 (cela semble bizarre, mais j'ai déjà vu cela deux fois !)