Giunsa Ug Nganong Gigamit Nimo Ang Variable $ SHLVL

Ang $ SHLVL nga variance gigamit aron sa pagsulti kanimo kung pila ka mga kabhang ang anaa kanimo. Kon ikaw naglibog niini kini angay nga magsugod sa sinugdanan.

Unsa ang usa ka Shell?

Ang usa ka kabhang nagkinahanglan og mga mando ug naghatag kanila ngadto sa nagpahigayon nga operating nga sistema aron ipahigayon. Sa kasagaran nga mga sistema sa Linux ang programa sa kabhang gitawag og BASH (Ang Bourne Again Shell) apan adunay uban nga anaa lakip na ang C Shell (tcsh) ug ang KORN shell (ksh).

Unsaon Pag-access sa Linux Shell

Sa kinatibuk-an ingon nga usa ka tiggamit ikaw nakig-interact sa shell nga programa pinaagi sa paggamit sa usa ka terminal nga emulation nga programa sama sa XTerm, konsole o gnome-terminal.

Kon ikaw nagpadagan sa usa ka windows manager sama sa Openbox o sa desktop environment sama sa GNOME o KDE makit-an nimo ang usa ka terminal emulator gikan sa usa ka menu o usa ka dash. Sa daghang mga sistema ang shortcut CTRL ALT ug T mag-abli usab sa usa ka terminal nga bintana.

Mahimo usab ikaw magbalhin ngadto sa laing tty (teletypewriter) nga naghatag diretso nga pag-access sa usa ka shell nga command line. Mahimo nimo kini pinaagi sa pagputol sa CTRL ALT ug F1 o CTRL ALT ug F2 ug uban pa.

Unsa ang Lakang sa Shell

Sa diha nga ikaw adunay usa ka sugo sa usa ka kabhang kini nagdagan sa usa ka butang nga gitawag sa kabhang sa lebel. Sulud sa usa ka kabhang mahimo nimo ablihan ang laing kabhang nga naghimo niini nga subshell o sa kabhang nga nagbukas niini.

Busa ang ginikanan nga bayani pagaisip nga tingali ang level 1 nga kabhang ug ang kabhang sa bata usa ka level 2 shell.

Unsaon Pag-display Ang Shell Level

Kini kinahanglan nga moabut ingon nga dili ikatingala base sa ulohan sa artikulo nga ang paagi nga imong mahibal-an kung asa nga lebel sa shell nga imong gisudlan mao ang paggamit sa $ SHLVL variable.

Sa pagtan-aw sa lebel sa kabhang nga ikaw karon nagdagan sa pagsulat sa mosunod:

echo $ SHLVL

Hinunoa ang makaikag kon imong ipatuman ang sugo sa ibabaw sulod sa usa ka terminal window mahimo ka matingala nga makita nga ang resulta mibalik 2.

Kung bisan pa nga ikaw nagdagan sa sama nga sugo gamit ang tty dayon ang resulta mao ang 1.

Ngano nga kini ang imong gipangayo? Maayo nga ang palibot sa desktop nga imong gipadagan gipadagan sa ibabaw sa usa ka kabhang. Kana nga kabhang mahimo nga lebel 1. Ang bisan unsang terminal window nga imong gibuksan gikan sa sulod sa kana nga desinyo sa desktop kinahanglan nga usa ka bata sa kabhang nga nagbukas sa kalikupan sa desktop ug sa ingon ang lebel sa kabhang dili mahimong magsugod sa bisan unsang gidaghanon gawas sa 2.

Ang tty wala sa pagpadagan sa usa ka desktop nga palibut ug busa usa ka level 1 nga kabhang.

Unsaon Paghimo Subshells

Ang labing sayon ​​nga paagi sa pagsulay sa konsepto sa mga kabhang ug mga subhella mao ang mosunod. Ablihi ang usa ka terminal window ug i-type ang mosunod:

echo $ SHLVL

Sama sa atong nasayran gikan sa usa ka terminal nga bintana ang minimum nga lebel sa kabhang 2 mao.

Karon sa sulod sa terminal, i-type ang mosunod:

sh

Ang sh command sa iyang kaugalingon nagpahigayon sa usa ka interactive nga kabhang nga nagpasabot nga ikaw naggamit sa usa ka kabhang sulod sa usa ka kabhang o usa ka subshell.

Kon imo na kining i-type pag-usab:

echo $ SHLVL

Imong makita nga ang lebel sa kabhang gibutang sa 3. Ang pagpadagan sa sh command gikan sa sulod sa subshell magbukas sa usa ka subshell sa subshell ug mao nga ang lebel sa kabhang sa level 4.

Nganong Importante ang Level sa Shell?

Ang lebel sa kabhang mahinungdanon kung maghunahuna mahitungod sa kasangkaran sa mga kausaban sulod sa imong mga script.

Magsugod kita sa yano nga butang:

iro = maisie
echo $ dog

Kon ikaw modagan sa ibabaw nga sugo sa usa ka kabhang ang pulong nga maisie ipakita sa terminal nga bintana.

Ablihi ang bag-ong kabhang pinaagi sa pag-type sa mosunod:

sh

Kon imong ipatuman kini nga sugo ikaw makakita nga walay bisan unsa nga matuod nga nahibalik:

echo $ dog

Kana tungod kay ang variable sa $ dog anaa lamang sa shell level 2. Kung ikaw mag-type sa exit aron sa pag-exit sa subshell ug pagdagan echo $ dog pag-usab ang pulong nga maisie ipakita na usab.

Angayan usab nga hunahunaon ang kinaiya sa kalibutanong mga kapilian sulod sa usa ka kabhang.

Pagsugod sa usa ka bag-o nga terminal sa terminal ug i-type ang mosunod:

export dog = maisie
echo $ dog

Sama sa imong gipaabut nga ang pulong nga maisie gipakita. Karon ablihi ang usa ka subshell ug i-type ang echo $ dog pag-usab. Niini nga panahon imong makita nga ang pulong maisie gipakita bisan pa ikaw anaa sa usa ka subshell.

Ang rason niini mao nga ang export command naghimo sa $ dog variable global. Ang pag-usab sa variable sa $ dog sulod sa subshell bisan kung imong gamiton ang command sa eksport wala makaapekto sa mga buko sa ginikanan niini.

Gilauman nga gikan niini makita nimo nga ang pagkasayud sa lebel sa kabhang nga imong ginabuhat adunay mahinungdanon sa pagsulat sa mga script.

Ang mga panig-ingnan nga akong gihatag simple kaayo apan komon na alang sa usa ka shell script nga motawag sa laing script sa usa ka shell nga sa laing bahin nagtawag sa laing kabhang sa script nga tanan karon nga nagdagan sa nagkalainlain nga ang-ang. Ang pagkasayud sa lebel sa kabhang mahimong mahinungdanon kaayo.