Kif u għaliex għandek tuża l-varjabbli SHLVL $

Il-varjabbli SHLVL $ huwa użat biex jgħidlek kemm qxur fil-fond int. Jekk int konfuż ma 'dan, ta' min jibda mill-bidu.

X'inhu Shell?

Qoxra tieħu kmandi u tagħtihom lis-sistema operattiva sottostanti biex twettaq. Fuq bosta sistemi Linux il-programm tal-qoxra jissejjaħ BASH (The Bourne Again Shell) iżda hemm oħrajn disponibbli inkluż il-C Shell (tcsh) u l-qoxra KORN (ksh).

Kif Aċċess Il-Shell Linux

Ġeneralment bħala utent int taġixxi mal-programm tal-qoxra permezz tal-użu ta 'programm ta' emulazzjoni terminali bħal XTerm, konsole jew gnome-terminal.

Jekk qed taħdem maniġer tat-twieqi bħal Openbox jew ambjent tad-desktop bħal GNOME jew KDE issib emulator tat-terminal minn menu jew daxx. F'ħafna sistemi l-aċċess dirett CTRL ALT u T tiftaħ tieqa tat-terminal ukoll.

Alternattivament tista 'taqleb għal ieħor tty (teletypewriter) li tipprovdi aċċess dirett għal qoxra tal-linja tal-kmand. Tista 'tagħmel dan billi tagħfas CTRL ALT u F1 jew CTRL ALT u F2 eċċ.

X'inhu Livell Shell

Meta tmexxi l-kmand f'qoxra, titħaddem f'xi ħaġa msejħa l-livell tal-qoxra. Fi ħdan qoxra tista 'tiftaħ qoxra oħra li tagħmilha subshell jew il-qoxra li fetaħha.

Għalhekk il-qoxra ewlenija tkun ikkunsidrata forsi l-qoxra tal-livell 1 u l-qoxra tat-tfal tkun qoxra ta 'livell 2.

Kif Biex Turi l-Livell tal-Qoxra

M'għandu jkun l-ebda sorpriża bbażata fuq it-titlu tal-artiklu li l-mod kif tista 'tgħid liema livell tal-qoxra li qed taħdem fiha huwa billi tuża l-varjabbli SHLVL $.

Biex tara l-livell tal-qoxra li bħalissa qed taħdem fit-tip dan li ġej:

eko $ SHLVL

Pjuttost interessanti jekk tmexxi l-kmand ta 'hawn fuq ġewwa tieqa tat-terminal tista' tkun sorpriż li tara li r-riżultat mibgħut lura huwa 2.

Jekk madankollu inti tmexxi l-istess kmand bl-użu tat-tty allura r-riżultat huwa 1.

Għaliex dan huwa l-każ li tista 'titlob? Ukoll l-ambjent tad-desktop li qed taħdem qed titħaddem flimkien ma 'qoxra. Dak il-qoxra tkun il-livell 1. Kwalunkwe tieqa tat-terminal li tiftaħ minn dak l-ambjent tad-desktop trid tkun tifel tal-qoxra li fetħet l-ambjent tad-desktop u għalhekk il-livell tal-qoxra ma jistax jibda f'numru ieħor għajr 2.

It-tty ma jaħdimx ambjent tad-desktop u għalhekk huwa sempliċement qoxra ta 'livell 1.

Kif Toħloq Subshells

L-eħfef mod biex jiġi ttestjat il-kunċett tal-qxur u s-subshells huwa kif ġej. Iftaħ tieqa tat-terminal u tattira dan li ġej:

eko $ SHLVL

Kif nafu minn tieqa tat-terminal, il-livell minimu tal-qoxra huwa 2.

Issa fit-tieqa tat-terminal, it-tip li ġej:

sh

Il-kmand tat-tmexxija waħdu jagħmel qoxra interattiva li tfisser li qed tuża qoxra fi qoxra jew subshell.

Jekk issa tip dan mill-ġdid:

eko $ SHLVL

Se tara li l-livell tal-qoxra huwa stabbilit għal 3. It-tmexxija tal-kmand sh mill-subshell tiftaħ subshell tal-subshell u għalhekk il-livell tal-qoxra se jkun fil-livell 4.

Għaliex Huwa Importanti Il-Livell tal-Qoxra?

Il-livell tal-qoxra huwa importanti meta wieħed jaħseb dwar l-ambitu tal-varjabbli fi skripts tiegħek.

Nibdew b'xi ħaġa sempliċi:

kelb = maisie
eko $ kelb

Jekk tmexxi l-kmand ta 'hawn fuq qoxra, il-kelma maisie tintwera fuq it-tieqa tat-terminal.

Iftaħ qoxra ġdida billi ttajpja dan li ġej:

sh

Jekk tmexxi dan il-kmand, tara li xejn ma jkun attwalment ritornat:

eko $ kelb

Dan huwa minħabba li l-varjabbli tal-kelb $ huwa disponibbli biss fil-livell tal-qoxra 2. Jekk tagħżel il-ħruġ biex toħroġ mill-subshell u ġġib echo $ dog darb'oħra l-kelma maisie tintwera mill-ġdid.

Ta 'min wieħed jaħseb dwar l-imġiba tal-varjabbli globali fi ħdan qoxra.

Ibda f'tieqa tat-terminal ġdida u tattira dan li ġej:

dog esportazzjoni = maisie
eko $ kelb

Kif tistenna li l-kelma maisie hija murija. Issa tiftaħ subshell u tip echo $ dog darb'oħra. Din id-darba se tara li l-kelma maisie hija murija anke jekk inti f'qoxra tas-sodda.

Ir-raġuni għal dan hija li l-kmand tal-esportazzjoni għamel il-varjabbli tal-kelb $ globali. Il-bidla tal-varjabbli tal-kelb $ fil-qoxra tas-subsib anke jekk tuża l-kmand tal-esportazzjoni ma għandha l-ebda effett fuq il-qoxra prinċipali tagħha.

Nisperaw minn dan tista 'tara li jafu li l-livell tal-qoxra li qed taħdem għandu xi sinifikat meta kiteb skripts.

L-eżempji li tajt huma sempliċiment sempliċi iżda huwa pjuttost komuni għal skrittura tal-qoxra waħda li tissejjaħ skrittura oħra tal-qoxra li mbagħad tissejjaħ skrittura ta 'qoxra oħra kollha li issa qed taħdem f'livelli differenti. Jafu l-livell tal-qoxra jista 'jkun importanti ħafna.