Nola eta zergatik erabili $ SHLVL aldakorra?

$ SHLVL aldagaia zenbat maskor sakona zaren esateko erabiltzen da. Hau nahastuz gero hasieratik hasita egongo da.

Zer da Shell bat?

Saskiratzaileak komandoak hartzen ditu eta sistema eragilearen azpiko sistema eragiten du. Linux sistema gehienetan shell programa izeneko BASH (Bourne Again Shell) baina beste batzuk eskuragarri daude C Shell (tcsh) eta KORN shell (ksh).

Nola sar ezazu Linux Shellera

Oro har, erabiltzaileak shell programarekin elkarreragiten du terminal emulazio- programa baten bidez, hala nola XTerm, konsole edo gnome-terminal.

Leiho kudeatzaile bat exekutatzen ari bazara Openbox edo mahaigaineko ingurune bat, hala nola, GNOME edo KDE terminaleko emuladore bat aurkituko duzu menu batetik edo marratxotik. Sistema askotan CTRL ALT eta T lasterbideak terminalaren leiho bat irekiko dute.

Bestela, beste tty (teletipeditzailea) aukera dezakezu, komando lerroaren shell sarbide zuzena ematen duena. Hau egin dezakezu CTRL ALT eta F1 edo CTRL ALT eta F2 sakatuz.

Zer da A Shell maila?

Komando bat exekutatzen duzunean shell-a deitzen den zerbait exekutatzen da. Shell baten barruan beste shell bat ireki dezakezu, horrek irekitzen duen subshell edo shell bat egiten du.

Hori dela eta, gurasoaren shella kontuan hartu beharko litzateke, agian, maila 1 shell eta haurrentzako shella 2 mailan izango litzateke.

How Shell maila erakutsi

Ez da harritzekoa artikuluaren izenburuan oinarritu behar, modu horretan exekutatzen ari zaren shell maila zein den jakiteko, $ SHLVL aldagaia erabiliz.

Hurrengo motako exekutatzen ari zaren shell maila ikusteko:

echo $ SHLVL

Baizik eta komenigarria exekutatzen baduzu, terminal-leiho batean exekutatzen baduzu, harritu egin daiteke emaitza 2 itzuli dela ikustea.

Hala ere, komandoa bera exekutatzen baduzu tty erabiliz, emaitza 1 da.

Zergatik galdetu dezakezun hau? Benetan exekutatzen ari zaren mahaigain ingurunea shell baten gainean exekutatzen ari da. Marjina 1 maila izango litzateke. Mahaigaineko ingurune honetan irekitako edozein terminal leiho mahaigain ingurunea ireki duen shellaren haurrentzat izan behar du eta, beraz, shell-maila ezin da beste 2 zenbakiarekin hasi.

Tty mahaigaineko ingurune bat exekutatzen ari da eta, beraz, besterik gabe, 1 mailaren shell bat da.

Nola sortu Subshells

Ondoren, maskorrak eta subshell kontzeptuak probatzeko modurik errazena da. Ireki terminaleko leiho bat eta idatzi hau:

echo $ SHLVL

Terminalaren leiho batetik dakigunez, gutxieneko shell maila 2 da.

Orain, terminalaren leihoan, idatzi honako hau:

sh

Komandiko sh komandoak shell interaktibo bat exekutatzen du eta horrek esan nahi du shell bat shell edo subshell baten barruan erabiltzen ari zarela.

Orain hau idatzi baduzu berriro:

echo $ SHLVL

Ikusi shell-aren maila 3. modura dagoela. Azpi-ataleko sh komandoa exekutatzean subshell-aren subshell bat irekiko da eta, beraz, shell maila 4 mailan egongo da.

Zergatik da muga-maila garrantzitsua?

Shell maila garrantzitsua da zure gidoien barruan aldagaiaren esparruan pentsatzen duzunean.

Gauza erraza da:

Txakurra = maisie
echo $ dog

Goiko komandoa shell-ean exekutatzen baduzu maiuskula hitza terminal-leihoan bistaratuko da.

Ireki shell berri bat idatziz honela idatziz:

sh

Komando hau exekutatzen baduzu ezer ez dela itzuliko dela ikusiko duzu.

echo $ dog

Hori dela eta $ dog aldagaia shell 2 mailan bakarrik dago eskuragarri. Sarrerak idazten badituzu subshell-etik irteteko eta echo $ dog-ean berriz ere hitza berriro agertuko da.

Era berean, merezi du shellaren barruan aldagai globalen portaera pentsatzea.

Hasi terminal-leiho berri batean eta idatzi hau:

export dog = maisie
echo $ dog

Hitzie hitza bistaratuko den bezala espero zenezake. Orain ireki subshell eta idatzi echo $ dog berriro. Oraingoan maiuskulen hitza bistaratuko da subshell batean dagoen arren.

Honen arrazoia esportazio komandoa $ dog aldagai global bihurtu zen. $ Dog aldagaia aldatu subshell barruan, esportazio komandoak erabiltzen ez badu ere, bere gurasoentzako maskorrak ez du eraginik.

Zorionez hemendik aurrera lan egiten ari zaren shell-ean jakitea oso garrantzitsua da script-ak idaztean.

Emandako adibideak oso sinplekoak dira baina oso ohikoa da shell script-ak beste shell script bat deitzeko, eta horrek, aldi berean, beste script shell bat deitzen du, denak maila ezberdinetan exekutatzen direnak. Shell maila ezagutzea oso garrantzitsua izan daiteke.