Wéi a Firwat Dir d'$ SHLVL Variabel benotze wëllt

D'Variable $ SHLVL gëtt benotzt fir Iech ze soen wéi vill Muschelen déif sinn. Wann Dir se verwiessele vun dësem ass et ze bezuele am Ufank.

Wat ass e Shell?

E Shell setzt Kommandéiert a gitt se dem Basisbetriebsystem. Op de meeschten Linux-Systeme gëtt den Shell-Programm BASH genannt (Bourne Again Shell) awer et sinn aner disponibel, och d'C Shell (tcsh) an d'KORN Shell (ksh).

Wéi Zougang vun de Linux Shell

Generell als Benotzer sidd Dir interagéiert mat dem Shell-Programm duerch d'Benotze vun engem terminalen Emulatiounsprogramm wéi XTerm, Konsole oder Gnome-Termin.

Wann Dir e Fënsterverwalter wéi Openbox oder enger Desktopsumgebung wéi GNOME oder KDE laacht, fannt Dir e Termin Emulator vun engem Menü oder engem Strich. Op ville Systeme kënnt d'Ofkiirzung CTRL ALT an T eng terminal Fënster opmaachen.

Alternativ kënnt Dir op en aner tty (Teletypewriter) wiesselen deen direkten Zougang zu enger Command Line Shell bitt. Dir kënnt dat maachen, dréckt CTRL ALT a F1 oder CTRL ALT a F2 etc.

Wat ass e Shell Level

Wann Dir e Kommando an engem Shell ewechgesprëtzt, fiert hien op eppes wat de Schamebunn genannt gëtt. An engem Shell kënnt Dir eng aner Schuel öffnen, déi et e Sub-Schach erliewt oder d'Schuel déi et huet.

Dofir ass d'Elterendeel och als Iwwerleeënheet vum Niveau 1 Shell gedeelt an d'Kanner Shell wär eng Schuel um Niveau 2.

Wéi de Display Shell Level Display

Et sollt kee Iwwerraschung baséieren op den Titel vum Artikel, sou wéi Dir kënnt soen wat Schuelstufe Dir leeft an ass mat der Variabel $ SHLVL.

Fir d'Schuelebene ze gesinn, déi Dir am Moment fonctionnéiert an no dësem Typ:

Echo $ SHLVL

Eischter interessant wann Dir de béise Kommando an enger Klemmfënster ausgeführt huet, kënnt Dir iwwerrascht ginn datt de Resultat erëm zréck komm ass 2.

Wann Dir awer de selwechte Kommando benotze mat dem tty dann ass d'Resultat 1.

Firwat ass dat de Fall wou Dir froen kënnt? Well d'Desktop-Ëmfeld Dir laafen ass op der Uewerfläch vun enger Shell ausgezeechent ginn. Dës Shell wäerte Niveau 1. Jidder Uschlossfenster déi Dir uewen an der Desktopvirus geoppt huet, muss ee Kand vun der Shell, déi d'Desktop-Umgebung erlaabt ass, an duerfir kann den Shell-Niveau net op all aner Nummer 2 beginn.

De Tty ass net en Desktop-Ëmfeld a gëtt dofir einfach ee Level 1 Shell.

Wéi Dir Subshells erstellt

Deen einfachste Wee fir d'Konzept vu Schalen an Ënnerhalter ze testen ass folgend. Öffnen vun enger Klemmter Fënster a gitt d'folgend:

Echo $ SHLVL

Wéi mir aus enger Klemmfënster wësse, ass de Mindestniveau vum Schuel 2.

Elo innerhalb vun der Terminfenster typen déi folgend:

sh

De Kommando vu sénger eegent léisst eng interaktive Shell, dat heescht datt Dir eng Shell innerhalb enger Shell benotzt oder e Sub-Shell benotzt.

Wann Dir dës eroflueden:

Echo $ SHLVL

Dir gesitt dat den Shell-Niveau opgeriicht ass 3. De Kommando vum Sh aus der Ënnerhalung auszeschléissen gëtt e Sub-Schach vun der Ënnerhalung opgemaach an sou datt de Shell-Niveau um Niveau 4 steet.

Firwat ass de Shell Niveau Wichteg?

De Shell-Niveau ass wichteg wann Dir iwwer de Beräich vun Variablen an Ären Skripten denkt.

Loosst eis mat eppes einfach:

Hond = Maisie
Echo $ Hund

Wann Dir de sougenannte Kommando an enger Shell leeft, gëtt d'Wuert Maisie an d'Termin window agefouert.

Öffne vun enger neier Shell andeems Dir déi folgend Saachen ausschreiwt:

sh

Wann Dir dëst Kommando ausfëllt, kënnt Dir kucken, datt näischt gëtt zréckgesat:

Echo $ Hund

Dat ass wéinst der Hënnvariablen $ nëmmen op Schuelniveau 2 verfügbar. Wann Dir den Ausgab ausgitt, fir den Ënnerhalter ze exitéieren an ech Ech $ $ eroofzehuelen, gëtt d'Wuert Maisie erëm gewisen.

Et ass och wäert ze denken iwwert d'Verhalen vun global Variablen an enger Shell.

Fänkt op eng nei Termin ze starten a gitt folgend:

Export Hund = Maisie
Echo $ Hund

Wéi Dir erwart, datt d'Wuert Maisie ugewisen gëtt. Loosst e Subschell opmaachen an echo $ dog again. Dës Kéier wärt Dir kucken datt d'Wuert Maisie ugewisen gëtt, obwuel Dir an enger Skala.

De Grond fir dëst ass datt den Exportbefehl den $ Héichvariablen global gemaach huet. Ännere vun der Variable vum $ Hënn an der Skizel, och wann Dir den Exportbefehl benotzt huet, keen Afloss op seng Eltereckelen.

Hoffentlech dovun fannt Dir, datt Dir wësst datt de Shell-Niveau Dir schafft an e wéineg Bedeitung huet wann Dir Skripte schreiwt.

D'Beispiller, déi ech geheescht hunn, sinn ganz simplistesch awer et ass ganz allgemeng fir een Shell-Skript fir eng aner Skelett-Skript ze ruffen, wat se en aneren Skelett-Skript rufft, dee se elo op verschiddene Niveauen lafen. Wësse wat de Shell-Niveau kann ganz wichteg sinn.