Miten ja miksi käytät $ SHLVL muuttujaa

$ SHLVL -muuttujaa kerrotaan, kuinka monta syvää profiilia olet. Jos tämä on sekava, kannattaa aloittaa alussa.

Mikä on Shell?

Shell ottaa komennot ja antaa heille taustalla olevan käyttöjärjestelmän suoritettavaksi. Useimmissa Linux-järjestelmissä kuoriohjelmaa kutsutaan BASH: ksi (Bourne Again Shell), mutta muitakin löytyy myös C Shell (tcsh) ja KORN shell (ksh).

Linux-Shellin käyttö

Yleensä käyttäjänä toimitaan vuorovaikutteisesti kuoriohjelman kanssa käyttäen pääteemulointiohjelmaa , kuten XTerm, konsole tai gnome-terminal.

Jos käytät Windows-hallintaa, kuten Openboxia tai työpöytäympäristöä, kuten GNOME tai KDE, löydät pääteemulaattorin joko valikosta tai viivasta. Monissa järjestelmissä pikavalinta CTRL ALT ja T avaavat myös pääteikkunan.

Vaihtoehtoisesti voit siirtyä toiseen tty (telekopiolaite), joka tarjoaa suoran pääsyn komentorivin kuoreen. Voit tehdä tämän painamalla CTRL ALT ja F1 tai CTRL ALT ja F2 jne.

Mikä on Shell-taso

Kun suoritat komennon kuoressa, se toimii jotain, jota kutsutaan kuorintasoksi. Shellin sisällä voit avata toisen kuoren, joka tekee sen pohjasta tai kuoresta, joka avasi sen.

Siksi vanhempi kuori katsotaan ehkä tasolle 1 ja lapsen kuori olisi taso 2-kuori.

Shell-tason näyttäminen

Artikkelin otsikon perusteella ei pitäisi olla yllättävää, että miten voit selvittää, missä shell-tasossa olet käynnissä, käyttämällä $ SHLVL-muuttujaa.

Nähdäksesi shell-tason, jota olet parhaillaan käynnissä, kirjoita seuraava:

echo $ SHLVL

Melko mielenkiintoista, jos suoritat yllä olevan komennon pääteikkunassa, saatat yllättyä nähdä, että tulos palautetaan 2.

Jos kuitenkin suoritat saman komennon tty: llä, niin tulos on 1.

Miksi tässä tapauksessa voit kysyä? Hyvin toimiva työpöytäympäristö on käynnissä kuoren päällä. Tämä kuori olisi taso 1. Kaikki työpöytäympäristössä avatut päätelaitteet on oltava kuori, joka avasi työpöytäympäristön, ja sen vuoksi kuori ei voi aloittaa millään muulla numerolla kuin 2.

Tty ei toimi työpöytäympäristössä, joten se on vain taso 1 -kuori.

Kuinka luoda liittymiä

Helpoin tapa testata kuorien ja pohjakerrosten käsite on seuraava. Avaa pääteikkuna ja kirjoita seuraava:

echo $ SHLVL

Kuten tiedämme pääteikkunasta, minimi kuori taso on 2.

Nyt pääteikkunan ikkunassa kirjoita seuraava:

sh

Sh-komento itsessään ohjaa vuorovaikutteisen kuoren, mikä tarkoittaa, että käytät kuorta kuoressa tai alaotsakkeessa.

Jos kirjoitat tämän uudelleen:

echo $ SHLVL

Näet, että kuori taso on asetettu 3. Sh-komennon suorittaminen alitustasolta avautuu alikerroksen alaosa, joten kuori taso on tasolla 4.

Miksi Shell Taso on tärkeä?

Shellin taso on tärkeä, kun ajatellaan muuttujien laajuutta skripteissäsi.

Aloitetaan jotain yksinkertaista:

koira = Maisie
echo $ dog

Jos suoritat yllä olevan komennon shellissa, sana maisie näkyy pääteikkunaan.

Avaa uusi kuori kirjoittamalla seuraavat:

sh

Jos suoritat tämän komennon, näet, että mitään ei palauteta:

echo $ dog

Tämä johtuu siitä, että $ koiran muuttuja on käytettävissä vain kuorintasolla 2. Jos kirjoitat ulostulon poistuaksesi alaotsakkeesta ja suoritat echo $ koiran uudelleen, sana maisie näkyy uudelleen.

On myös syytä miettiä globaalien muuttujien käyttäytymistä kuoressa.

Aloita uudessa pääteikkunassa ja kirjoita seuraava:

viedä koira = maisie
echo $ dog

Kuten odottaa, sana maisie näkyy. Avaa nyt alaotsake ja kirjoita echo $ koira uudelleen. Tällä kertaa näet, että sana maisie näytetään, vaikka olet alaotsakkeessa.

Syy tähän on, että vientikomento teki $ koiran muuttujan globaaliksi. $ Dog -muuttujan muuttaminen alaotsakkeessa, vaikka käytät vientikomennon, ei vaikuta sen emolevyihin.

Toivottavasti tästä näet, että kuuntelutason tuntemisella on merkitystä kirjoitettaessa komentosarjoja.

Annetut esimerkit ovat hyvin yksinkertaisia, mutta on melko yleistä, että yksi komentosarja käskee toista kuorikirjoitusohjelmaa, joka puolestaan ​​kutsuu toista kuori komentosarjaa, joka nyt toimii eri tasoilla. Kuorintatason tunteminen voi olla erittäin tärkeää.