Қалай және неге сіз $ SHLVL айнымалысын қолданасыз

$ SHLVL айнымалысы сізге қаншалықты терең қабықшалар туралы айтып беру үшін пайдаланылады. Егер сіз мұны шатастырсаңыз, ол басынан бастау керек.

Шелл дегеніміз не?

Қабақ командаларды қабылдайды және оларды операциялық операциялық жүйеге жеткізеді. Linux жүйелерінің көпшілігінде қабық бағдарламасы BASH (The Bourne Again Shell) деп аталады, бірақ C Shell (tcsh) және KORN қабығын (ksh) қоса алғанда, басқалары бар.

Linux Shell жүйесіне кіру жолы

Әдетте пайдаланушы ретінде XTerm, konsole немесе gnome-терминал сияқты терминалдық эмуляция бағдарламасын қолдану арқылы қабықпен бағдарламамен өзара әрекеттесесіз.

Егер Openbox сияқты терезе менеджерін немесе GNOME немесе KDE сияқты жұмыс үстелі ортасын іске қоссаңыз, терминал эмуляторын мәзірден немесе сызықшадан табасыз. Көптеген жүйелерде CTRL ALT және T пернелер тіркесімі терминал терезесін де ашады.

Сонымен қатар, командалық жолдың қабығын тікелей қол жеткізуге мүмкіндік беретін басқа tty (teletypewriter) режиміне ауысуға болады. Сіз мұны CTRL ALT және F1 немесе CTRL ALT және F2 пернелерін басу арқылы орындауға болады.

Shell деңгейі қандай?

Қабықшадағы пәрменді іске қосқан кезде ол қабық деңгей деп аталатын нәрседе жұмыс істейді. Қабықшаның ішіне басқа қоршауды ашуға болады, ол оны ашқан немесе оны ашқан қабықшаны жасайды.

Сондықтан ата-аналық қабығы 1-қабықтың қабаты деп есептеледі, ал бала қабығы 2 деңгейлі қабық болады.

Shell деңгейін көрсету жолы

Мақаланың тақырыбына негізделіп, сіз қай қабық деңгейін іске қосатыныңызды $ SHLVL айнымалысы арқылы білуге ​​болады.

Қазіргі кезде сіз жұмыс істеп жатқан қабық деңгейін көру үшін:

echo $ SHLVL

Терминал терезесінде жоғарыда көрсетілген пәрменді іске қосқаныңызда, қызықты болса, нәтиже қайтарылғандығын көргеніңіз таңданарлықтай болуы мүмкін.

Егер сіз tty арқылы бірдей команданы іске қоссаңыз, онда нәтиже 1 болады.

Неліктен бұл сұрақ туындауы мүмкін? Сіз жұмыс істейтін үстелдік орта қабықтың үстінде іске қосылады. Бұл қабығы 1-деңгей болады. Жұмыс үстелінің ортасынан ашқан кез-келген терминал терезесі жұмыс үстелінің ортасын ашқан қабықшаның баласы болуы керек, сондықтан қабықтың деңгейі 2-ден басқа кез келген саннан басталмайды.

Tty жұмыс үстелі ортасын іске қоспайды және сондықтан жай деңгейдегі 1 қабықша болып табылады.

Қабаттылығын құру

Раковиналар мен түйіндер тұжырымдамасын сынаудың ең оңай жолы келесідей. Терминал терезесін ашыңыз және келесіні теріңіз:

echo $ SHLVL

Терминал терезесінен белгілі болғандай, қабықтың ең төменгі деңгейі - 2.

Терминал терезесінің ішіндегі енді мынаны теріңіз:

sh

Ш командасы интерактивті қабықпен жұмыс істейді, яғни қабықтың немесе қабықшаның ішіндегі қабықты пайдаланғаныңызды білдіреді.

Енді оны қайтадан енгізсеңіз:

echo $ SHLVL

Шеңбердің деңгейі 3-ге қойылғанын көресіз. Sh командасының ішінен sh командасын іске қосу төменгі қабықтың астыңғы бөлігін ашады және қабықтың деңгейі 4-деңгейде болады.

Неге Shell деңгейі маңызды?

Сценарийлердегі айнымалы мәндер туралы ойлау кезінде қабықтың деңгейі маңызды.

Қарапайым нәрседен бастасақ:

dog = maisie
echo $ dog

Егер сіз жоғарыда көрсетілген пәрменді қабықшада іске қоссаңыз, maisie сөзі терминал терезесіне көрсетіледі.

Төмендегілерді теру арқылы жаңа қабықты ашыңыз:

sh

Егер сіз осы пәрменді іске қоссаңыз, ештеңе қайтарылмағанын көресіз:

echo $ dog

Себебі $ dog айнымалысы қабық деңгейінде ғана қолжетімді болады. Егер сіз шлюзден шығу үшін exit сөзін теріп, echo $ итті іске қоссаңыз, онда maisie сөзі қайтадан көрсетіледі.

Сондай-ақ, қабықтың ішіндегі жаһандық айнымалылардың мінез-құлқы туралы ойлану керек.

Жаңа терминал терезесінен бастаңыз және келесіні теріңіз:

export dog = maisie
echo $ dog

Сіз қалай күтесіз, сөздің мэйсиі көрсетіледі. Енді подземельді ашып, echo $ dog қайтадан жазыңыз. Бұл жолы, егер сіз кішігірімде болсаңыз да, сөздің пайда болуын көресіз.

Мұның себебі экспорттау командасы ит айнымалысы жаһандық мәнін жасады. Экспорттау пәрменін пайдалансаңыз да, $ dog айнымалы мәнінің өзгеруін өзіңіздің ата-аналық ракурстарыңызға әсер етпейді.

Бұдан сіз сценарий жазу кезінде сіз жұмыс істеп жатқан қабық деңгейін білу маңызды.

Мен берген мысалдар өте қарапайым, бірақ бір қабық сценарийі басқа қабық сценарийін шақыру үшін өте кең таралған, ол өз кезегінде әртүрлі деңгейлерде жұмыс істейтін басқа қабық сценарийін атайды. Раковинаның деңгейін білу өте маңызды болуы мүмкін.