Comment et pourquoi utiliser la variable $SHLVL
La variable $SHLVL vous indique la profondeur du shell. Si vous êtes confus à ce sujet, cela vaut la peine de recommencer à zéro.
Qu’est-ce qu’une coquille ?
Le shell accepte les commandes et fournit ces commandes au système d’exploitation sous-jacent pour exécution. Sur la plupart des systèmes Linux, le programme shell s’appelle BASH (The Bourne Again Shell), mais il en existe d’autres, notamment le shell C (tcsh) et le shell KORN (ksh).
Comment accéder au shell Linux
En règle générale, en tant qu’utilisateur, vous interagissez avec des programmes shell via un émulateur de terminal tel que XTerm, konsole ou gnome-terminal.
Si vous utilisez un gestionnaire Windows comme Openbox ou un environnement de bureau comme GNOME ou KDE, vous trouverez un émulateur de terminal dans le menu ou le tiret.Sur de nombreux systèmes, le raccourci CTRL+ALT+T Ouvrez une fenêtre de terminal.
Alternativement, vous pouvez passer à un autre TTY (Teletypewriter), qui fournit un accès direct à un shell de ligne de commande.Vous pouvez appuyer sur CTRL+ALT+F1 ou CTRL+ALT+F2.
Qu’est-ce qu’une coquille ?
Lorsque vous exécutez une commande dans le shell, elle s’exécute au niveau du shell. Dans un shell, vous pouvez ouvrir un autre shell, ce qui en fait un sous-shell du shell qui l’a ouvert. Par conséquent, le shell parent est considéré comme un shell de niveau 1 et le sous-shell est un shell de niveau 2.
Comment afficher les coquillages
La façon de savoir à quel niveau de shell vous exécutez est d’utiliser la variable $SHVLL. Pour voir le niveau de shell que vous utilisez actuellement, tapez ce qui suit :
echo $SHLVL datatype= »code »>
Lorsque vous exécutez la commande ci-dessus dans une fenêtre de terminal, le résultat renvoyé est 2. Cependant, si vous exécutez la même commande avec un tty, le résultat est 1. tty n’exécute pas un environnement de bureau et est un shell de niveau 1.
Pourquoi cela arrive-t-il? L’environnement de bureau que vous exécutez s’exécute au-dessus du shell. L’enceinte est de classe 1. Toute fenêtre de terminal que vous ouvrez à partir de cet environnement de bureau est une fenêtre enfant du shell qui a ouvert l’environnement de bureau. Par conséquent, le niveau du shell ne peut pas commencer par un nombre autre que 2.
Comment créer un sous-shell
La manière la plus simple de tester les concepts de shell et de sous-shell est la suivante. Ouvrez une fenêtre de terminal et tapez ce qui suit :
echo $SHLVL datatype= »code »>
Lors de l’exécution de cette commande à partir d’une fenêtre de terminal, le niveau de shell minimal est 2.
Tapez ce qui suit dans une fenêtre de terminal :
sh data-type= »code »>
La commande sh exécute un shell interactif. Cela signifie que vous utilisez le shell dans un shell ou un sous-shell.
Si vous tapez à nouveau :
echo $SHLVL datatype= »code »>
Vous verrez que le niveau du shell est défini sur 3. L’exécution de la commande sh à partir d’un sous-shell ouvre un sous-shell du sous-shell, de sorte que le niveau du shell est le niveau 4.
Pourquoi le niveau du shell est-il important ?
Le niveau du shell est important lorsque l’on considère la portée des variables dans un script. Prenons un exemple simple :
chien = Macy
echo $dog datatype= »code »>
Si vous exécutez la commande ci-dessus dans un shell, le mot Macy affiché dans une fenêtre de terminal.
Pour ouvrir un nouveau shell, tapez ce qui suit :
sh data-type= »code »>
Lorsque vous exécutez cette commande, vous verrez que rien n’est renvoyé :
echo $dog datatype= »code »>
En effet, la variable $dog n’est disponible qu’au niveau 2 du shell.Si vous tapez exit pour quitter le sous-shell et exécuter echo $chien Encore une fois, le mot Macy Montre encore une fois.
Cela vaut également la peine de considérer le comportement des variables globales dans le shell.
Ouvrez une nouvelle fenêtre de terminal et tapez ce qui suit :
chien d’exportation = maisie
echo $dog datatype= »code »>
Comme prévu, le mot Macy Afficher.Ensuite, ouvrez un sous-shell et entrez echo $chien de nouveau.Cette fois, un mot Macy Cela s’affichera même si vous êtes dans un sous-shell. La raison en est que la commande export fait de la variable $dog une variable globale. Changer la variable $dog dans un sous-shell, même si vous utilisez la commande export, n’affectera pas son shell parent.
Lors de l’écriture de scripts, il est important de connaître le niveau de shell que vous utilisez. Les exemples de cet article sont simples, mais il est courant qu’un script shell appelle un autre script shell, qui à son tour appelle un autre script shell. Tous fonctionnent à des niveaux différents. Il est important de comprendre le niveau du shell.
Merci de nous en informer!
Dites-nous pourquoi !
D’autres détails ne sont pas assez difficiles à comprendre