Mi az a Linux Shell és mik azok a shell szintek?
A $SHLVL változó megmondja, hány shell mélységben vagy. Ha ez megzavarta, érdemes az elején kezdeni.

Mi az a Shell?
A héj parancsokat vesz, és ezeket a parancsokat a mögöttes operációs rendszernek hajtja végre. A legtöbb Linux rendszeren a shell programot hívják BASH (The Bourne Again Shell), de vannak mások is, köztük a C Shell (tcsh) és a KORN héj (ksh).
Hogyan lehet elérni a Linux Shell-t
Általában felhasználóként a shell programmal a terminál emuláció program, mint pl XTerm, konzol, vagy gnome-terminál.
Ha futtat egy Windows Managert, mint pl Nyitott doboz vagy asztali környezet, például GNOME vagy KDE, egy terminálemulátort vagy menüből vagy kötőjelből találhat. Sok rendszeren a parancsikon CTRL+ALT+T megnyit egy terminál ablakot.
Alternatív megoldásként válthat másik TTY-re (teletypewriter), amely közvetlen hozzáférést biztosít a parancssori shellhez. Ezt a gomb megnyomásával teheti meg CTRL+ALT+F1 vagy CTRL+ALT+F2.
Mi az a Shell szint?
Ha parancsértelmezőben futtat egy parancsot, az a shell szintjén fut. A héjon belül megnyithat egy másik héjat, ami az azt megnyitó héj részhéjává teszi. Ezért a szülőhéjat 1. szintű héjnak, a gyermekhéjat pedig 2. szintű héjnak tekintjük.
A shell-szint megjelenítése
A $SHLVL változó használatával állapíthatja meg, hogy melyik shell-szinten fut. A jelenleg futó shell-szint megtekintéséhez írja be a következőket:
echo $SHLVL.
Ha a fenti parancsot terminálablakban futtatja, a visszaadott eredmény 2. Ha azonban ugyanazt a parancsot futtatja a tty használatával, akkor az eredmény 1. A tty nem futtat asztali környezetet, és egy 1. szintű shell.
Miért van ez így? Az Ön által futtatott asztali környezet egy shell tetején fut. Ez a shell 1. szintű. Az adott asztali környezetből megnyitott bármely terminálablak az asztali környezetet megnyitó shell gyermeke. Ezért a shell szint nem kezdődhet 2-n kívül más számmal.
Hogyan készítsünk alhéjakat
A héjak és alhéjak fogalmának tesztelésének legegyszerűbb módja a következő. Nyisson meg egy terminálablakot, majd írja be a következőket:
echo $SHLVL.
Amikor ezt a parancsot terminálablakból futtatja, a minimális shell szint 2.
Írja be a következőt a terminál ablakba:
SH.
Az sh parancs egy interaktív parancsértelmezőt futtat. Ez azt jelenti, hogy shell-t használsz egy shellben vagy egy alhéjban.
Ha újra beírod:
echo $SHLVL.
Látja, hogy a shell szintje 3-ra van állítva. Az sh parancs futtatása az alhéjból megnyílik az alhéj egy részhéja, így a shell szintje a 4. szinten van.
Miért fontos a Shell szint?
A shell-szint fontos, ha a szkriptekben lévő változók hatókörét gondoljuk át. Egy egyszerű példa kedvéért:
kutya=maisie
echo $kutya.
Ha a fenti parancsot shellben futtatja, akkor a szó maisie megjelenik a terminál ablakában.
Új shell megnyitásához írja be a következőt:
SH.
Amikor futtatja ezt a parancsot, látni fogja, hogy nem ad vissza semmit:
echo $kutya.
Ez azért van, mert a $dog változó csak a 2. shell szinten érhető el. Ha az exit beírásával kilép az alhéjból és fut echo $kutya ismét a szó maisie ismét megjelenik.
Érdemes elgondolkodni a globális változók shell-en belüli viselkedésén is.
Nyisson meg egy új terminálablakot, majd írja be a következőket:
export dog=maisie
echo $kutya.
Ahogy az várható volt, a szó maisie megjeleníti. Ezután nyisson meg egy alhéjat, és írja be echo $kutya újra. Ezúttal a szó maisie akkor is megjelenik, ha egy alhéjban van. Ennek az az oka, hogy az export parancs globálissá tette a $dog változót. A $dog változó módosítása az alhéjban, még akkor sem, ha az export parancsot használja, nincs hatással a szülő shellekre.
Szkriptek írásakor fontos, hogy ismerje a shell-szintet, amelyen dolgozik. A cikkben található példák egyszerűek, de gyakran előfordul, hogy az egyik shell-szkript meghív egy másik shell-szkriptet, amely viszont egy másik shell-szkriptet hív meg. Mindezek különböző szinteken futnak. A héj szintjének ismerete fontos.