Paano At Bakit Gusto Mong Gamitin Ang $ SHLVL Variable

Ang variable na $ SHLVL ay ginagamit upang sabihin sa iyo kung gaano karaming mga shell ang malalim sa iyo. Kung ikaw ay nalilito sa pamamagitan ng ito ay nagkakahalaga ng simula sa simula.

Ano ang Shell?

Ang isang shell ay tumatagal ng mga utos at nagbibigay sa kanila sa pinagbabatayan ng operating system upang maisagawa. Sa karamihan ng mga sistema ng Linux ang shell program ay tinatawag na BASH (Ang Bourne Again Shell) ngunit mayroong iba pa na magagamit kabilang ang C Shell (tcsh) at ang KORN shell (ksh).

Paano Upang I-access ang Linux Shell

Sa pangkalahatan bilang isang user na nakikipag-ugnayan ka sa programa ng shell sa pamamagitan ng paggamit ng terminal na emulation program tulad ng XTerm, konsole o gnome-terminal.

Kung nagpapatakbo ka ng isang windows manager tulad ng Openbox o isang desktop na kapaligiran tulad ng GNOME o KDE makakahanap ka ng isang terminal emulator alinman mula sa isang menu o isang gitling. Sa maraming mga sistema ang shortcut CTRL ALT at T ay magbubukas ng isang terminal window pati na rin.

Bilang kahalili maaari kang lumipat sa isa pang tty (teletypewriter) na nagbibigay ng direktang pag-access sa shell ng command line. Magagawa mo ito sa pamamagitan ng pagpindot sa CTRL ALT at F1 o CTRL ALT at F2 atbp

Ano ang Antas ng Shell

Kapag nagpatakbo ka ng isang command sa isang shell na ito ay tumatakbo sa isang bagay na tinatawag na antas ng shell. Sa loob ng isang shell maaari mong buksan ang isa pang shell na gumagawa ito ng isang subshell o ang shell na binuksan ito.

Samakatuwid ang magulang shell ay itinuturing marahil ang antas ng 1 shell at shell ng bata ay isang antas ng 2 shell.

Paano Upang Ipakita ang Antas ng Shell

Ito ay dapat na dumating bilang walang sorpresa batay sa pamagat ng artikulo na ang paraan na maaari mong sabihin kung aling shell antas na iyong pinapatakbo sa ay sa pamamagitan ng paggamit ng $ SHLVL variable.

Upang makita ang antas ng shell na kasalukuyang tumatakbo sa uri ang mga sumusunod:

echo $ SHLVL

Sa halip na kawili-wili kung pinapatakbo mo ang utos sa itaas sa loob ng isang window ng terminal maaari kang mabigla upang makita na ang resultang ibinalik ay 2.

Kung gayunman nagpapatakbo ka ng parehong utos gamit ang tty pagkatapos ang resulta ay 1.

Bakit ito ang maaari mong itanong? Well ang desktop na kapaligiran na iyong pinapatakbo ay pinapatakbo sa tuktok ng isang shell. Ang shell na iyon ay magiging antas 1. Anumang terminal window na binuksan mo mula sa loob ng kapaligiran ng desktop ay dapat na isang bata ng shell na nagbukas sa kapaligiran ng desktop at sa gayon ang antas ng shell ay hindi maaaring magsimula sa anumang numero maliban sa 2.

Ang tty ay hindi nagpapatakbo ng isang desktop na kapaligiran at samakatuwid ay isang shell ng antas 1 lamang.

Paano Gumawa ng mga Subshell

Ang pinakamadaling paraan upang masubukan ang konsepto ng mga shell at subshell ay ang mga sumusunod. Buksan ang terminal ng terminal at i-type ang mga sumusunod:

echo $ SHLVL

Tulad ng alam natin mula sa isang terminal window ang minimum na antas ng shell ay 2.

Ngayon sa loob ng terminal window i-type ang mga sumusunod:

sh

Ang sh command sa sarili nito ay nagpapatakbo ng isang interactive shell na nangangahulugan na gumagamit ka ng isang shell sa loob ng isang shell o isang subshell.

Kung muling i-type mo ito muli:

echo $ SHLVL

Makikita mo na ang antas ng shell ay nakatakda sa 3. Ang pagpapatakbo ng sh command mula sa loob ng subshell ay magbubukas ng subshell ng subshell at kaya ang antas ng shell ay nasa antas na 4.

Bakit Mahalaga ang Antas ng Shell?

Ang antas ng shell ay mahalaga kapag nag-iisip tungkol sa saklaw ng mga variable sa loob ng iyong mga script.

Magsimula tayo sa isang simpleng bagay:

aso = maisie
echo $ dog

Kung pinapatakbo mo ang command sa itaas sa isang shell ang salita maisie ay ipapakita sa terminal window.

Buksan ang isang bagong shell sa pamamagitan ng pag-type ng mga sumusunod:

sh

Kung patakbuhin mo ang utos na ito makikita mo na wala talagang ibinalik:

echo $ dog

Iyon ay dahil ang $ dog variable ay magagamit lamang sa antas ng shell 2. Kung nag-type ka ng exit upang lumabas sa subshell at magpatakbo ng echo $ dog muli ang word maisie ay ipapakita muli.

Ito rin ay nagkakahalaga ng pag-iisip tungkol sa pag-uugali ng mga pandaigdigang variable sa loob ng isang shell.

Magsimula sa bagong terminal window at i-type ang mga sumusunod:

export dog = maisie
echo $ dog

Tulad ng iyong inaasahan ang salitang maisie ay ipinapakita. Ngayon buksan ang isang subshell at i-type echo $ dog muli. Sa oras na ito makikita mo na ang salita maisie ay ipinapakita kahit na ikaw ay nasa isang subshell.

Ang dahilan dito ay ang utos ng pag-export na ginawa ng $ dog variable global. Ang pagpapalit ng $ dog variable sa loob ng subshell kahit na gamitin mo ang command ng pag-export ay hindi nakakaapekto sa mga shell ng magulang nito.

Sana mula dito makikita mo na ang pag-alam sa antas ng shell na iyong ginagawa ay may kabuluhan kapag nagsulat ng mga script.

Ang mga halimbawa na ibinigay ko ay napaka-simplistic ngunit ito ay karaniwang para sa isang shell script na tumawag sa isa pang shell script na kung saan naman tawag ng isa pang shell script lahat ng mga ito ngayon tumatakbo sa iba't ibang mga antas. Ang kaalaman sa antas ng shell ay maaaring maging napakahalaga.