Hva er et Linux Shell og hva er Shell Levels?
$SHLVL-variabelen forteller deg hvor mange skjell dypt du er. Hvis du er forvirret av dette, er det verdt å starte fra begynnelsen.

Hva er et skall?
EN skall tar kommandoer og gir disse kommandoene til det underliggende operativsystemet å utføre. På de fleste Linux-systemer kalles shell-programmet BASH (The Bourne Again Shell), men det er andre, inkludert C Shell (tcsh) og KORN skall (ksh).
Hvordan få tilgang til Linux Shell
Vanligvis, som bruker, samhandler du med shell-programmet gjennom en terminalemulering program som f.eks XTerm, konsoll, eller gnome-terminal.
Hvis du kjører en Windows Manager som f.eks Åpen boks eller et skrivebordsmiljø som GNOME eller KDE, finner du en terminalemulator enten fra en meny eller en strek. På mange systemer er snarveien CTRL+ALT+T åpner et terminalvindu.
Alternativt kan du bytte til en annen TTY (teletypewriter), som gir direkte tilgang til et kommandolinjeskall. Du kan gjøre dette ved å trykke CTRL+ALT+F1 eller CTRL+ALT+F2.
Hva er et skallnivå?
Når du kjører en kommando i et skall, kjører den på skallnivå. Innenfor et skall kan du åpne et annet skall, noe som gjør det til et underskall av skallet som åpnet det. Derfor regnes foreldreskallet som nivå 1-skallet, og barneskallet er et nivå 2-skall.
Hvordan vise skallnivået
Måten å fortelle hvilket skallnivå du kjører på er å bruke $SHLVL-variabelen. For å se skallnivået du kjører i, skriv inn følgende:
ekko $SHLVL.
Når du kjører kommandoen ovenfor i et terminalvindu, er resultatet 2. Hvis du derimot kjører den samme kommandoen med tty, er resultatet 1. tty kjører ikke et skrivebordsmiljø og er et nivå 1-skall.
Hvorfor er dette tilfellet? Skrivebordsmiljøet du kjører kjøres på toppen av et skall. Det skallet er nivå 1. Ethvert terminalvindu du åpner fra det skrivebordsmiljøet er et barn av skallet som åpnet skrivebordsmiljøet. Derfor kan ikke skallnivået starte med noe annet tall enn 2.
Hvordan lage subshells
Den enkleste måten å teste konseptet med skjell og underskall er som følger. Åpne et terminalvindu, og skriv deretter inn følgende:
ekko $SHLVL.
Når du kjører denne kommandoen fra et terminalvindu, er minste skallnivå 2.
Skriv inn følgende i terminalvinduet:
sh.
sh-kommandoen kjører et interaktivt skall. Dette betyr at du bruker et skall i et skall eller et underskall.
Hvis du skriver dette igjen:
ekko $SHLVL.
Du ser at skallnivået er satt til 3. Å kjøre sh-kommandoen fra underskallet åpner et underskall av underskallet, og derfor er skallnivået på nivå 4.
Hvorfor er skallnivået viktig?
Skallnivået er viktig når du tenker på omfanget av variabler i skriptene dine. For et enkelt eksempel:
hund=maisie
ekko $hund.
Hvis du kjører kommandoen ovenfor i et skall, vil ordet maisie vises til terminalvinduet.
For å åpne et nytt skall, skriv inn følgende:
sh.
Når du kjører denne kommandoen, vil du se at ingenting returneres:
ekko $hund.
Det er fordi $dog-variabelen bare er tilgjengelig på skallnivå 2. Hvis du skriver exit for å avslutte subshell og kjøre ekko $hund igjen, ordet maisie vises igjen.
Det er også verdt å tenke på oppførselen til globale variabler i et skall.
Åpne et nytt terminalvindu, og skriv deretter inn følgende:
eksport hund=maisie
ekko $hund.
Som forventet, ordet maisie viser. Deretter åpner du et subshell og skriver inn ekko $hund en gang til. Denne gangen ordet maisie vises selv om du er i et subshell. Grunnen til dette er at eksportkommandoen gjorde $dog-variabelen global. Å endre $dog-variabelen i underskallet, selv om du bruker eksportkommandoen, påvirker ikke dets overordnede skall.
Å kjenne skallnivået du jobber i har betydning når du skriver manus. Eksemplene i denne artikkelen er enkle, men det er vanlig at ett shell-script kaller et annet shell-script som igjen kaller et annet shell-script. Alle disse kjører på forskjellige nivåer. Å kjenne skallnivået er viktig.