Kaj je lupina Linuxa in kakšne so ravni lupine?

Spremenljivka $SHLVL vam pove, koliko lupin globoko ste. Če vas to zmede, je vredno začeti na začetku.

Posnetek zaslona ukaza $SHLVL Linux v uporabi

Kaj je lupina?

A lupina sprejema ukaze in jih da izvajati osnovnemu operacijskemu sistemu. V večini sistemov Linux se imenuje lupinski program BASH (The Bourne Again Shell), vendar obstajajo še drugi, vključno z C Shell (tcsh) in KORN lupina (ksh).

Kako dostopati do lupine Linux

Na splošno kot uporabnik komunicirate z lupinskim programom prek a emulacija terminala program kot npr XTerm, konzola, ali gnome-terminal.

Če zaženete upravitelja Windows, kot je npr Openbox ali namizno okolje, kot je GNOME oz KDE, boste našli terminalski emulator v meniju ali pomišljaju. V mnogih sistemih bližnjica CTRL+ALT+T odpre terminalsko okno.

Lahko pa preklopite na drug TTY (telespisni stroj), ki omogoča neposreden dostop do lupine ukazne vrstice. To lahko storite s pritiskom CTRL+ALT+F1 oz CTRL+ALT+F2.

Kaj je raven lupine?

Ko zaženete ukaz v lupini, se ta izvaja na ravni lupine. Znotraj lupine lahko odprete drugo lupino, zaradi česar je podlupina lupine, ki jo je odprla. Zato se nadrejena lupina šteje za lupino stopnje 1, podrejena lupina pa je lupina stopnje 2.

Kako prikazati raven lupine

Način, da ugotovite, v kateri ravni lupine uporabljate, je uporaba spremenljivke $SHLVL. Če si želite ogledati raven lupine, v kateri trenutno uporabljate, vnesite naslednje:

odmeva $SHLVL. 

Ko zaženete zgornji ukaz v terminalskem oknu, je vrnjen rezultat 2. Če pa zaženete isti ukaz z uporabo tty, je rezultat 1. Tty ne izvaja namiznega okolja in je lupina stopnje 1.

Zakaj je temu tako? Namizno okolje, ki ga izvajate, se izvaja na vrhu lupine. Ta lupina je stopnje 1. Vsako terminalsko okno, ki ga odprete iz tega namiznega okolja, je podrejeno lupini, ki je odprla namizno okolje. Zato se raven lupine ne more začeti z nobeno drugo številko kot z 2.

Kako ustvariti podlupine

Koncept lupine in podlupine najlažje preizkusite na naslednji način. Odprite terminalsko okno in vnesite naslednje:

odmeva $SHLVL. 

Ko zaženete ta ukaz iz terminalskega okna, je najmanjša raven lupine 2.

V terminalsko okno vnesite naslednje:

sh. 

Ukaz sh zažene interaktivno lupino. To pomeni, da uporabljate lupino v lupini ali podlupini.

Če ponovno vnesete tole:

odmeva $SHLVL. 

Vidite, da je raven lupine nastavljena na 3. Zagon ukaza sh iz podlupine odpre podlupino podlupine in tako je raven lupine na ravni 4.

Zakaj je raven lupine pomembna?

Raven lupine je pomembna, ko razmišljate o obsegu spremenljivk v vaših skriptih. Za preprost primer:

pes=maisie
odmev $pes.

Če zgornji ukaz zaženete v lupini, bo word maisie se prikaže v oknu terminala.

Če želite odpreti novo lupino, vnesite naslednje:

sh. 

Ko zaženete ta ukaz, boste videli, da se nič ne vrne:

odmev $pes. 

To je zato, ker je spremenljivka $dog na voljo samo na ravni lupine 2. Če vnesete exit za izhod iz podlupine in zagon odmev $pes spet beseda maisie ponovno prikaže.

Prav tako je vredno razmisliti o obnašanju globalnih spremenljivk znotraj lupine.

Odprite novo terminalsko okno in vnesite naslednje:

izvoz pes=maisi
odmev $pes.

Kot je bilo pričakovano, beseda maisie zasloni. Nato odprite podlupino in vnesite odmev $pes ponovno. Tokrat beseda maisie prikaže, čeprav ste v podlupini. Razlog za to je, da je ukaz za izvoz spremenil spremenljivko $dog globalno. Spreminjanje spremenljivke $dog v podlupini, tudi če uporabite ukaz izvoza, ne vpliva na njene nadrejene lupine.

Poznavanje ravni lupine, v kateri delate, je pomembno pri pisanju skriptov. Primeri v tem članku so preprosti, vendar je običajno, da en lupinski skript pokliče drugega lupinskega skripta, ki nato pokliče drug lupinski skript. Vse to poteka na različnih ravneh. Pomembno je poznati nivo lupine.