Kā un kāpēc jūs varētu izmantot $ SHLVL mainīgo

Mainīgais $ SHLVL tiek izmantots, lai pateiktu, cik dziļi jūs esat čaulas. Ja jūs to sajaucat, sākumā tas ir vērts.

Kas ir apvalks?

Operētājsistēma izpilda komandas un piešķir tām operētājsistēmu. Lielākajā daļā Linux sistēmas korpusa programmu sauc par BASH (The Bourne Again Shell), bet ir pieejami arī citi, tostarp C Shell (tcsh) un KORN apvalks (ksh).

Kā piekļūt Linux apvalkam

Parasti kā lietotājs jūs mijiedarbojat ar čaulas programmu, izmantojot termināļa emulācijas programmu, piemēram, XTerm, konsole vai gnome-termināli.

Ja izmantojat Windows pārvaldnieku, piemēram, Openbox vai darbvirsmas vidi, piemēram, GNOME vai KDE, jūs atradīsiet termināļa emulatoru no izvēlnes vai domuzīmes. Daudzās sistēmās īsinājumtaustiņi CTRL ALT un T atver arī termināla logu.

Alternatīvi jūs varat pārslēgties uz citu tty (teletypewriter), kas nodrošina tiešu piekļuvi komandrindas apvalks. To var izdarīt, nospiežot taustiņus CTRL ALT un F1 vai CTRL ALT un F2 utt.

Kas ir apvalka līmenis?

Kad jūs palaižat komandu čaulā, tā darbojas ar kaut ko, ko sauc par čaulas līmeni. Korpusa ietvaros varat atvērt citu čaulu, kas padara to par apakšslāni vai tā korpusu, kurš to atvēris.

Tāpēc vecāku apvalks tiek uzskatīts par varbūt 1. līmeņa apvalku, un bērna apvalks būtu 2. līmeņa apvalks.

Kā parādīt apvalka līmeni

Pamatojoties uz raksta nosaukumu, nevajadzētu pārsteigt, ka veids, kā jūs varat noteikt, kura apvalka līmenis jūs izmantojat, ir izmantojot $ SHLVL mainīgo.

Lai apskatītu pašreizējo apvalka līmeni, ierakstiet šādus:

echo $ SHLVL

Drīzāk interesanti, ja termināla logā palaižit iepriekš minēto komandu, jūs varētu būt pārsteigts, ka atgrieztais rezultāts ir 2.

Ja jūs tomēr lietojat pašu komandu, izmantojot tty, tad rezultāts ir 1.

Kāpēc tas ir jautājums, kuru jūs varētu uzdot? Nu darbvirsmas vide, kurā darbojas, tiek darbināts virs čaulas. Šis korpusa līmenis ir 1. līmenis. Jebkurš terminālās logs, kuru atverat šajā darbvirsmas vidē, ir jābūt tādam korpusa bērnam, kurš atvēris darbvirsmas vidi, un tādēļ čaulas līmenī nevar sākt nevienu skaitli, izņemot 2.

Tty nedarbojas ar darbvirsmas vidi, tāpēc tas ir vienkārši 1. līmeņa čaula.

Kā izveidot apakšsekcijas

Vienkāršākais veids, kā pārbaudīt čaumalu un apakšslāņu koncepciju, ir šāds. Atveriet termināla logu un ierakstiet šādu:

echo $ SHLVL

Kā mēs zinām no termināla loga, minimālais apvalka līmenis ir 2.

Tagad termināla logā ierakstiet šādu:

sh

Š komanda pati par sevi vada interaktīvu čaulu, kas nozīmē, ka jūs izmantojat čaulu čaulā vai apakšslānī.

Ja jūs atkal ierakstiet šo:

echo $ SHLVL

Jūs redzēsiet, ka čaulas līmenis ir iestatīts uz 3. Veicot komandu sh no apakšshēmas, tiks atvērta apakšskopa apakšslodze, un tādējādi korpusa līmenis būs 4. līmenī.

Kāpēc Shell līmenis ir svarīgs?

Korpusa līmenis ir svarīgs, domājot par mainīgo lielumu apjomu jūsu skriptos.

Sāksim ar kaut ko vienkāršu:

suns = maisie
echo $ suns

Ja jūs palaižat iepriekš minēto komandu čaulā, vārds maisie tiks parādīts termināla logā.

Atveriet jaunu apvalku, ierakstot sekojošo:

sh

Ja palaidīsit šo komandu, jūs redzēsiet, ka nekas nav faktiski atgriezts:

echo $ suns

Tas ir tāpēc, ka $ dog mainīgais ir pieejams tikai ar čaulas līmeni 2. Ja jūs ierakstiet exit, lai izietu no apakšslodzes, un atkal palaidiet echo $ suni, vārds maisie tiks parādīts vēlreiz.

Ir arī vērts domāt par globālo mainīgo uzvedību apvalkā.

Sāciet lietot jaunā termināla logā un ierakstiet šādu:

eksporta suns = maisie
echo $ suns

Kā jūs varētu gaidīt, vārds maisie tiek parādīts. Tagad atveriet apakšslodzi un atkārtojiet echo $ suni. Šoreiz jūs redzēsit, ka vārds maisie tiek parādīts, kaut arī jūs esat apakšnozarē.

Iemesls tam ir tas, ka eksporta komanda padarīja $ dog mainīgu globālu. $ Sojas mainīgā mainīšana apakšshieldā pat tad, ja izmantojat eksporta komandu, neietekmē vecāku čaulas.

Cerams, ka no šī jūs varat redzēt, ka, zinot, ka čaulas līmenis, kurā jūs strādājat, ir kaut kas nozīmīgs rakstot skriptus.

Mani dotie piemēri ir ļoti vienkāršoti, taču vienam čaulas skriptam ir diezgan bieži sastādīt vēl vienu čaulas skriptu, kas savukārt prasa vēl vienu čaulas skriptu, kas tagad darbojas dažādos līmeņos. Zinot čaulas līmeni var būt ļoti svarīga.