Skip to content

Kuinka ja miksi käyttäisit muuttujaa $ SHLVL

19 de kesäkuu de 2021

Muuttuja $ SHLVL kertoo kuinka monta kuorta olet. Jos olet hämmentynyt tästä, kannattaa aloittaa alusta.

Mikä on kuori?

Kuori ottaa komentoja ja antaa nämä komennot taustalla olevalle käyttöjärjestelmälle suoritettavaksi. Useimmissa Linux-järjestelmissä kuoriohjelma kutsutaan nimellä BASH (The Bourne Again Shell), mutta on muitakin, mukaan lukien C-kuori (tcsh) ja KORN-kuori (ksh).

Kuinka käyttää Linux-kuorta

Yleensä käyttäjänä olet vuorovaikutuksessa kuoriohjelman kanssa pääteemulointiohjelman kautta, kuten XTerm, konsole tai gnome-pääte. Jos suoritat Windows Managerin, kuten Openbox, tai työpöytäympäristön, kuten GNOME tai KDE, löydät pääteemulaattorin joko valikosta tai viivasta. Monissa järjestelmissä pikakuvake CTRL + ALT + T avaa pääteikkunan. Vaihtoehtoisesti voit vaihtaa toiseen TTY-kirjoituslaitteeseen, joka tarjoaa suoran pääsyn komentorivin kuoreen. Voit tehdä tämän painamalla CTRL + ALT + F1 tai CTRL + ALT + F2.

Mikä on kuoritaso?

Kun suoritat komennon kuoressa, se suoritetaan kuoritasolla. Kuoressa voit avata toisen kuoren, mikä tekee siitä sen avaavan kuoren alikuoren. Siksi vanhemman kuoren katsotaan olevan tason 1 kuori ja lapsen kuori on tason 2 kuori.

Kuinka näyttää kuoritaso

Tapa kertoa missä kuoritasolla olet käyttämässä muuttujaa $ SHLVL. Jos haluat nähdä parhaillaan suoritettavan kuoritason, kirjoita seuraava: echo $ SHLVL

type = ”code”> Kun suoritat yllä olevan komennon pääteikkunassa, tulos on 2. Jos kuitenkin suoritat saman komennon tty: n avulla, tulos on 1. Tty ei suorita työpöytää ja se on tason 1 kuori. Miksi näin on? Käyttämäsi työpöytäympäristö suoritetaan kuoren päällä. Tämä kuori on taso 1. Kaikki työpöytäympäristöstä avaamasi pääteikkuna on työpöytäympäristön avaavan kuoren alataso. Siksi kuoritaso ei voi alkaa millään muulla numerolla kuin 2.

Kuinka luoda alikuoria

Helpoin tapa testata kuorien ja alikuorien käsitettä on seuraava. Avaa pääteikkuna ja kirjoita seuraava: echo $ SHLVL

type = ”code”> Kun suoritat tämän komennon pääteikkunasta, kuoren vähimmäistaso on 2. Kirjoita seuraava pääteikkunaan: sh

type = ”code”> Sh-komento suorittaa interaktiivisen kuoren. Tämä tarkoittaa, että käytät kuorta kuoressa tai alikuoressa. Jos kirjoitat tämän uudelleen: echo $ SHLVL

type = ”code”> Näet, että komentotulkin tasoksi on asetettu 3. sh-komennon suorittaminen alikuoresta avaa alikuoren alikuoren ja siten kuoren taso on tasolla 4.

Miksi kuoritaso on tärkeä?

Kuoren taso on tärkeä, kun ajatellaan skriptien muuttujien laajuutta. Yksinkertainen esimerkki: koira = maisie
echo $ koira

type = ”code”> Jos suoritat yllä olevan komennon kuoressa, sana maisie näkyy pääteikkunassa. Avaa uusi kuori kirjoittamalla seuraava: sh

type = ”code”> Kun suoritat tämän komennon, huomaat, että mitään ei palauteta: echo $ dog

type = ”code”> Tämä johtuu siitä, että $ dog -muuttuja on käytettävissä vain kuoren tasolla 2. Jos kirjoitat exit poistuaksesi alikuoresta ja suorittaaksesi echo $ koira jälleen sana maisie näkyy uudelleen. On myös syytä miettiä globaalien muuttujien käyttäytymistä kuoressa. Avaa uusi pääteikkuna ja kirjoita seuraava: export dog = maisie
echo $ koira

type = ”code”> Odotetusti sana maisie näytöt. Avaa seuraavaksi alikuori ja kirjoita echo $ koira uudelleen. Tällä kertaa sana maisie näkyy, vaikka olisit alikuoressa. Syynä tähän on se, että vientikomento muutti $ dog -muuttujan globaaliksi. $ Dog -muuttujan muuttaminen alikuoressa, vaikka käytät vientikomentoa, ei vaikuta sen vanhempiin kuoreihin. Työtasosi tuntemisella on merkitystä kirjoitettaessa komentosarjoja. Tämän artikkelin esimerkit ovat yksinkertaisia, mutta on tavallista, että yksi shell-komentosarja kutsuu toista shell-komentosarjaa, joka puolestaan ​​kutsuu toista shell-komentosarjaa. Kaikki nämä kulkevat eri tasoilla. Kuoren tason tunteminen on tärkeää.