Mis on Linuxi kest ja mis on kestatasemed?

Muutuja $SHLVL näitab, kui palju kestasid sügaval te olete. Kui see teid segab, tasub alustada algusest.

Ekraanipilt kasutusel olevast Linuxi käsust $SHLVL

Mis on Shell?

A kest võtab käske ja annab need käsud aluseks olevale operatsioonisüsteemile täitmiseks. Enamikus Linuxi süsteemides kutsutakse shellprogrammi BASH (The Bourne Again Shell), kuid on ka teisi, sealhulgas C Shell (tcsh) ja KORN kest (ksh).

Kuidas pääseda juurde Linuxi kestale

Üldjuhul suhtlete kasutajana shellprogrammiga läbi a terminali emulatsioon programm nagu XTerm, konsoolvõi gnome-terminal.

Kui kasutate Windowsi haldurit, näiteks Avatud karp või töölauakeskkond, näiteks GNOME või KDE, leiate terminali emulaatori kas menüüst või kriipsult. Paljudes süsteemides otsetee CTRL+ALT+T avab terminali akna.

Teise võimalusena saate lülituda teisele TTY-le (teletypewriter), mis tagab otsese juurdepääsu käsurea kestale. Seda saate teha vajutades CTRL+ALT+F1 või CTRL+ALT+F2.

Mis on Shelli tase?

Kui käivitate käsu kestas, töötab see kesta tasemel. Kestas saate avada teise kesta, mis muudab selle selle avanud kesta alamkestaks. Seetõttu peetakse algkestat 1. taseme kestaks ja alamkestat 2. taseme kestaks.

Kuidas kuvada kesta taset

Viis teada saada, millisel shellistasemel töötate, on kasutada muutujat $SHLVL. Praegu kasutatava shelltaseme nägemiseks tippige järgmine tekst:

kaja $SHLVL. 

Kui käivitate ülaltoodud käsu terminaliaknas, on tagastatav tulemus 2. Kui aga käivitate sama käsu tty abil, on tulemuseks 1. tty ei käita töölauakeskkonda ja on 1. taseme kest.

Miks see nii on? Teie käivitatav töölauakeskkond töötab kesta peal. See kest on 1. tasemel. Iga terminaliaken, mille sellest töölauakeskkonnast avate, on töölauakeskkonna avanud kesta alam. Seetõttu ei saa kestase alata ühestki teisest numbrist peale 2.

Kuidas luua alamkehi

Lihtsaim viis kestade ja alamkestade kontseptsiooni testimiseks on järgmine. Avage terminali aken ja tippige järgmine tekst:

kaja $SHLVL. 

Kui käivitate selle käsu terminaliaknas, on minimaalne kestase 2.

Sisestage terminali aknasse järgmine tekst:

sh. 

Käsk sh käivitab interaktiivse kesta. See tähendab, et kasutate kesta kestas või alamkestas.

Kui sisestate selle uuesti:

kaja $SHLVL. 

Näete, et kesta tase on seatud väärtusele 3. Käsu sh käivitamine alamkestas avab alamkesta alamkesta ja seega on shelli tase 4. tasemel.

Miks on Shelli tase oluline?

Shelli tase on oluline, kui mõelda oma skriptide muutujate ulatusele. Lihtsa näite jaoks:

koer=maisie
kaja $koer.

Kui käivitate ülaltoodud käsu kestas, siis sõna maisie kuvatakse terminali aknasse.

Uue kesta avamiseks tippige järgmine tekst:

sh. 

Selle käsu käivitamisel näete, et midagi ei tagastata:

kaja $koer. 

Seda seetõttu, et muutuja $dog on saadaval ainult shelli tasemel 2. Kui sisestate alamkestast väljumiseks ja käivitamiseks käsu exit kaja $koer jälle sõna maisie kuvatakse uuesti.

Samuti tasub mõelda globaalsete muutujate käitumisele kestas.

Avage uus terminaliaken ja tippige järgmine tekst:

ekspordi koer=maisie
kaja $koer.

Nagu oodatud, sõna maisie kuvab. Järgmisena avage alamkest ja tippige kaja $koer uuesti. Seekord sõna maisie kuvatakse isegi siis, kui olete alamkestas. Selle põhjuseks on asjaolu, et ekspordikäsk muutis muutuja $dog globaalseks. Muutuja $dog muutmine alamkestas, isegi kui kasutate ekspordikäsku, ei mõjuta selle ülemkestasid.

Skriptide kirjutamisel on oluline teada, millise shelli tasemel töötate. Selle artikli näited on lihtsad, kuid on tavaline, et üks shelliskript kutsub teist kestaskripti, mis omakorda kutsub teist shelliskripti. Kõik need töötavad erinevatel tasanditel. Oluline on teada kesta taset.