Qanday qilib va ​​nima uchun $ SHLVL o'zgaruvchini ishlatasiz

$ SHLVL o'zgaruvchisi sizga qanchalik qobiq bo'lganingizni aytib berish uchun ishlatiladi. Agar siz bunga aralashgan bo'lsangiz, u boshidan boshlash kerak.

Shell nima?

Qobiq buyruqlar oladi va ularni bajarish uchun asosiy operatsion tizimga beradi. Ko'pgina Linux tizimlarida qobiq dasturi BASH (The Bourne Again Shell) deb nomlanadi, ammo C Shell (tcsh) va KORN shell (ksh) kabi boshqa mavjud.

Linux Shell ga qanday kirish mumkin

Odatda foydalanuvchi sifatida XTerm, konsole yoki gnome-terminali kabi terminallar emulyatsiyasi dasturidan foydalanish orqali siz qobiq dasturlari bilan o'zaro aloqadasiz.

Agar Openbox kabi Windows menejeri yoki GNOME yoki KDE kabi ish stoli muhiti bilan ishlayotgan bo'lsangiz, menyudan yoki chiziqdan terminal emulyatorini topasiz. Ko'pgina tizimlarda CTRL ALT va T qisqa to'lqinli oyna ochiladi.

Shu bilan bir qatorda, buyruq satri qobig'iga bevosita kirish imkonini beruvchi boshqa tty (teletypewriter) ga o'tishingiz mumkin. Buni CTRL ALT va F1 yoki CTRL ALT va F2 ni bosish orqali amalga oshirishingiz mumkin.

Qobiq darajasi nima?

Qobiqdagi buyruqni bajarganda, u qobiq darajasi deb nomlangan narsada ishlaydi. Agar qobiq ichida boshqa qavatni ochishingiz mumkin, bu esa uning ochilishini yoki uni ochgan qobiqni hosil qiladi.

Shuning uchun ota-ona qobig'i 1-darajali qobiq deb hisoblanishi va bola qobig'i 2-darajali qobiq bo'ladi.

Shell darajasini ko'rsatish uchun

Ushbu maqolaning sarlavhasi asosida ishlaydigan qobiq darajasini $ SHLVL o'zgarmaydiganidan foydalanishingiz mumkinligini bilib olishingiz mumkin.

Siz hozirda ishlayotgan qobiq darajasini quyidagicha ko'rish uchun:

echo $ SHLVL

Yuqorida ko'rsatilgan buyrug'ni terminal oynasida ishga tushirsangiz, natijada qaytib kelgan natijaning 2 ekanligini ko'rib hayron bo'lishingiz mumkin.

Biroq, agar siz tty bilan bir xil buyruqni ishlatsangiz, unda natijalar 1 bo'ladi.

Nima uchun bunday bo'lishi mumkin? Xo'sh, ishlayotgan ish stoli muhiti qobiqning ustida ishlaydi. Bu qobiq 1-darajali bo'lar edi. Siz ish stoli atrofidan ochilgan har qanday terminal oynasi ish stoli muhiti ochilgan qobiqning bolasi bo'lishi kerak, shuning uchun qobiq darajasi 2dan boshqa har qanday sonda boshlana olmaydi.

Tty ish stoli muhiti emas va shuning uchun oddiygina 1-darajali qobiqdir.

Qanday qilib subshelllarni yaratish

Kabuklar va pastki chiziqlari kontseptsiyasini sinab ko'rishning eng oson yo'li quyidagicha. Terminal oynasini oching va quyidagilarni yozing:

echo $ SHLVL

Terminal oynasida bilsak, eng kam qobiq darajasi 2 bo'ladi.

Endilikda terminal oynasida quyidagilar mavjud:

sh

Sh buyrug'i o'z interaktiv qobig'ini boshqaradi, ya'ni siz qobiq yoki pastki qavatdagi qobiqdan foydalanmoqchisiz.

Endi siz yana shunday yozsangiz:

echo $ SHLVL

Siz qobiqning darajasi 3 ga o'rnatilganini ko'ryapsiz. Sh ostidagi ichki buyruqni bajarish subshellning pastki qavatini ochadi va shuning uchun qobiq darajasi 4-darajali bo'ladi.

Nima uchun Shell saviyasi muhimmi?

Skriptlaringizdagi o'zgaruvchilar doirasi haqida o'ylashda qobiq darajasi juda muhim.

Oddiy bir narsa bilan boshlaymiz:

it = maisie
echo $ it

Yuqoridagi komandani qobiqda ishlatsangiz, maisie so'zi terminal oynasiga ko'rsatiladi.

Quyidagilarni yozib yangi shellni oching:

sh

Agar siz ushbu buyruqni ishlatsangiz, hech narsa aslida qaytarilmasligini ko'rasiz:

echo $ it

Buning sababi, $ it o'zgaruvchisi faqat qobiq darajasida mavjud. Agar siz quyi to'plamdan chiqish va echo $ itni ishlatish uchun exit yozsangiz, maisie so'zi yana paydo bo'ladi.

Shuningdek, qobiqdagi global o'zgaruvchilarning xatti-harakatlari haqida o'ylash kerak.

Yangi terminalda oynani oching va quyidagilarni yozing:

eksport qiling = maisie
echo $ it

Maisie so'zining paydo bo'lishi kutilgandek. Endi quyi qavatni oching va echo $ itni qayta kiriting. Bu safar "maisie" so'zi "pastki qavatda" bo'lishiga qaramasdan ko'rinadi.

Buning sababi shundaki, eksport buyrug'i $ it o'zgaruvchan globalni yaratdi. Agar siz eksport buyrug'ini ishlatsangiz ham, o'zingizning ota-onangizga ta'sir qilmaslik uchun subshell ichida $ it o'zgaruvchilarini o'zgartirish.

Umid qilamanki, siz ishlayotgan qobiq darajasini bilish buyruqlarni yozishda muhim ahamiyatga ega ekanligini ko'rishingiz mumkin.

Men bergan misollar juda sodda, biroq boshqa shell skriptlari uchun boshqa shell skriptlarini chaqirish uchun juda keng tarqalgan. Shell darajasini bilish juda muhimdir.