Kas ir Linux apvalks un kādi ir apvalka līmeņi?

Mainīgais $SHLVL norāda, cik čaulu dziļumā atrodaties. Ja jūs tas mulsina, ir vērts sākt no sākuma.

Lietotās komandas $SHLVL Linux ekrānuzņēmums

Kas ir apvalks?

A apvalks ņem komandas un dod šīs komandas pamatā esošajai operētājsistēmai, lai tās izpildītu. Lielākajā daļā Linux sistēmu čaulas programma tiek izsaukta BASH (The Bourne Again Shell), taču ir arī citi, tostarp C Shell (tcsh) un KORN apvalks (ksh).

Kā piekļūt Linux apvalkam

Parasti jūs kā lietotājs mijiedarbojaties ar čaulas programmu, izmantojot a termināļa emulācija programma, piemēram, XTerm, konsole, vai gnome-terminal.

Ja izmantojat Windows pārvaldnieku, piemēram, Openbox vai darbvirsmas vidi, piemēram, GNOME vai KDE, jūs atradīsit termināļa emulatoru vai nu izvēlnē, vai domuzīmē. Daudzās sistēmās saīsne CTRL+ALT+T atver termināļa logu.

Varat arī pārslēgties uz citu TTY (teletaipmašīnu), kas nodrošina tiešu piekļuvi komandrindas apvalkam. To var izdarīt, nospiežot CTRL+ALT+F1 vai CTRL+ALT+F2.

Kas ir apvalka līmenis?

Palaižot komandu čaulā, tā tiek palaista čaulas līmenī. Apvalkā varat atvērt citu apvalku, kas padara to par tā čaulas apakščaulu, kas to atvēra. Tāpēc vecākčaula tiek uzskatīta par 1. līmeņa čaulu, bet bērnčaula ir 2. līmeņa apvalks.

Kā parādīt čaulas līmeni

Veids, kā noteikt, kurā čaulas līmenī jūs izmantojat, ir izmantot mainīgo $SHLVL. Lai redzētu čaulas līmeni, kurā pašlaik darbojas, ierakstiet šo:

atbalss $SHLVL. 

Palaižot iepriekš minēto komandu termināļa logā, atgrieztais rezultāts ir 2. Tomēr, ja palaižat to pašu komandu, izmantojot tty, rezultāts ir 1. tty nedarbojas darbvirsmas vidē un ir 1. līmeņa apvalks.

Kāpēc tas tā ir? Darbvirsmas vide, kuru izmantojat, tiek darbināta čaulas virspusē. Šis apvalks ir 1. līmenis. Jebkurš termināļa logs, ko atverat no šīs darbvirsmas vides, ir čaulas atvasinājums, kas atvēra darbvirsmas vidi. Tāpēc čaulas līmenis nevar sākties no cita skaitļa, izņemot 2.

Kā izveidot apakščaulas

Vienkāršākais veids, kā pārbaudīt čaulu un apakščaulu jēdzienu, ir šāds. Atveriet termināļa logu un pēc tam ierakstiet šo:

atbalss $SHLVL. 

Palaižot šo komandu no termināļa loga, minimālais čaulas līmenis ir 2.

Termināļa logā ierakstiet:

sh. 

Komanda sh palaiž interaktīvu čaulu. Tas nozīmē, ka jūs izmantojat čaulu čaulā vai apakščaulā.

Ja ierakstāt šo vēlreiz:

atbalss $SHLVL. 

Jūs redzat, ka čaulas līmenis ir iestatīts uz 3. Palaižot komandu sh no apakščaulas, tiek atvērta apakščaulas apakščaula, un tādējādi čaulas līmenis ir 4. līmenī.

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

Apvalka līmenis ir svarīgs, domājot par mainīgo apjomu jūsu skriptos. Vienkāršam piemēram:

suns=maisie
atbalss $suns.

Ja palaižat iepriekš minēto komandu čaulā, vārds maisie tiek parādīts termināļa logā.

Lai atvērtu jaunu čaulu, ierakstiet šo:

sh. 

Palaižot šo komandu, jūs redzēsit, ka nekas netiek atgriezts:

atbalss $suns. 

Tas ir tāpēc, ka mainīgais $dog ir pieejams tikai 2. čaulas līmenī. Ja ierakstāt exit, lai izietu no apakščaulas un palaistu atbalss $suns atkal vārds maisie atkal tiek parādīts.

Ir arī vērts padomāt par globālo mainīgo uzvedību čaulā.

Atveriet jaunu termināļa logu un pēc tam ierakstiet šo:

eksporta suns=maisie
atbalss $suns.

Kā gaidīts, vārds maisie displeji. Pēc tam atveriet apakšapvalku un ierakstiet atbalss $suns atkal. Šoreiz vārds maisie tiek parādīts, pat ja atrodaties apakščaulā. Iemesls tam ir tas, ka eksportēšanas komanda padarīja mainīgo $dog globālu. Mainīgā $dog maiņa apakščaulā, pat ja izmantojat eksporta komandu, neietekmē tā vecākčaulas.

Rakstot skriptus, ir svarīgi zināt čaulas līmeni, kurā strādājat. Šajā rakstā minētie piemēri ir vienkārši, taču parasti viens čaulas skripts izsauc citu čaulas skriptu, kas savukārt izsauc citu čaulas skriptu. Visi šie darbojas dažādos līmeņos. Ir svarīgi zināt apvalka līmeni.