GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi le $shlvl commence-t-il au niveau 2 dans les shells sans connexion mais au niveau 1 dans les shells de connexion dans Rhel 7 ?

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 !)


Linux
  1. Pourquoi l'expression régulière fonctionne-t-elle dans X mais pas dans Y ?

  2. Différence entre le shell de connexion et le shell sans connexion ?

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

  4. Pourquoi l'utilisateur racine a-t-il besoin d'une autorisation Sudo ?

  5. Pourquoi les shells interactifs sur les shells de connexion Osx sont-ils par défaut ?

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

Pourquoi un shell de connexion « sudo -i » casse-t-il un argument de chaîne de commande Here-doc ?

Pourquoi ce "pendant la lecture" fonctionne-t-il dans un terminal, mais pas dans un script shell ?

Que fait Rackspace dans le cloud ?

CentOS / RHEL :Comment changer le shell de connexion de l'utilisateur

`ssh <host>` est un shell de connexion, mais `ssh <host> <command>` ne l'est pas ?