Როგორ და რატომ უნდა გამოიყენოთ $ SHLVL ცვლადი

$ SHLVL ცვლადი გამოიყენება იმისათვის, რომ გითხრათ რამდენი ჭურვი ღრმა ხართ. თუ დაბნეული ხართ ამით, დასაწყისია დაწყებული.

რა არის Shell?

Shell იღებს ბრძანებებს და აძლევს მათ ძირითადი ოპერაციული სისტემის შეასრულოს. უმეტეს Linux სისტემებში Shell პროგრამა ეწოდება BASH (The Bourne Again Shell), მაგრამ არსებობს სხვა, მათ შორის C Shell (tcsh) და KORN shell (ksh).

როგორ შევავსოთ Linux Shell

ზოგადად, როგორც მომხმარებელი თქვენ ურთიერთქმედება ჭურვი პროგრამა გამოყენებით ტერმინალის ემულაციის პროგრამა, როგორიცაა XTerm, konsole ან gnome- ტერმინალის.

თუ თქვენ იყენებთ ფანჯრის მენეჯერს, როგორიცაა Openbox ან საგამომცემლო გარემო, როგორიცაა GNOME ან KDE, თქვენ იხილავთ ტერმინალის ემულატორს მენიუდან ან Dash- სგან. ბევრ სისტემებში კომბინაცია CTRL ALT და T გახსნის ტერმინალის ფანჯარასაც.

გარდა ამისა, თქვენ შეგიძლიათ გადახვიდეთ სხვა tty (teletypewriter), რომელიც უზრუნველყოფს პირდაპირ წვდომას ბრძანების ხაზის ჭურვი. შეგიძლიათ ამის გაკეთება CTRL ALT და F1 ან CTRL ALT და F2- ის დაჭერით.

რა არის Shell დონე

როდესაც თქვენ აწარმოებს ბრძანება shell იგი გადის რაღაც მოუწოდა ჭურვი დონეზე. ჭურვიში შეგიძლიათ გახსნათ კიდევ ერთი ჭურვი, რომელიც ქმნის მას ქვეშელს ან ჭურვი, რომელიც გაიხსნა.

აქედან გამომდინარე, მშობელი ჭურვი შეიძლება ჩაითვალოს, ალბათ, დონე 1 ჭურვი და ბავშვის ჭურვი იქნება დონე 2 ჭურვი.

როგორ უნდა გამოაჩინოთ Shell დონე

ეს არ უნდა მოულოდნელად სტატიის სათაურზე დაფუძნებული სტატიის მიხედვით, რომლის საშუალებითაც შეგიძლიათ თქვათ, რომელი ჭურვი დგას თქვენ იყენებთ $ SHLVL ცვლადის გამოყენებით.

იმისათვის, რომ იხილოთ ჭურვი დონე, რომ თქვენ ამჟამად გაშვებული ტიპის შემდეგი:

echo $ SHLVL

უფრო საინტერესოა, თუ ტერმინალურ ფანჯარაში ამ ბრძანების გაშვება შეიძლება გაგიკვირდეთ, რომ დაინახავთ შედეგს 2.

თუ თქვენ აწარმოებთ იმავე ბრძანებას tty გამოყენებით, მაშინ შედეგი 1.

რატომ შეიძლება ასე გკითხოთ? კარგად დესკტოპის გარემოში მიმდინარეობს გაშვებული თავზე ჭურვი. რომ ეს shell იქნება დონე 1. ნებისმიერი ტერმინალის ფანჯარაში, რომელიც გახსნილია ამ დესკტოპის გარემოში, უნდა იყოს ბავშვის ჭურვი, რომელიც გახსნილია საგამომცემლო გარემო და ამიტომ ჭურვი დონეზე ვერ დაიწყება 2-ზე გარდა.

Tty არ არის გაშვებული დესკტოპის გარემოში და ამიტომ უბრალოდ დონე 1 shell.

როგორ შევქმნათ Subshells

ჭურვი და ქვედანაყოფების კონცეფციის შესამოწმებლად მარტივი გზა ასეთია. გახსენით ტერმინალის ფანჯარა და შეიტანეთ შემდეგი:

echo $ SHLVL

როგორც ვიცით, ტერმინალის ფანჯრიდან მინიმალური ჭურვი არის 2.

ახლა ტერმინალის ფანჯარაში შემდეგი ტიპისაა:

Sh ბრძანება საკუთარი გადის ინტერაქტიული ჭურვი, რაც იმას ნიშნავს, თქვენ იყენებთ shell ფარგლებში ჭურვი ან subshelll.

თუ ახლა ხელახლა ჩაწერეთ:

echo $ SHLVL

დაინახავთ, რომ ჭურვი დონემდეა 3. შაბლის შიგნიდან sh ბრძანება გაიხსნება ქვესახეების სუბშელზე და შეფარდება დონე 4-ზე.

რატომ არის Shell Level მნიშვნელოვანი?

ჭურჭლის დონე მნიშვნელოვანია თქვენს სკრიპტში ცვლადების ფარგლების შესახებ.

დავიწყოთ რაღაც მარტივი:

ძაღლი = maisie
ექო $ ძაღლი

თუ ზემოთ ხსენებულ ბრძანებას შეჭამთ, სიტყვა maisie გამოჩნდება ტერმინალის ფანჯარაში.

გახსნა ახალი ჭურვი მიერ აკრეფით შემდეგი:

თუ თქვენ აწარმოებს ამ ბრძანებას ნახავთ, რომ არაფერი არ დაბრუნდა:

ექო $ ძაღლი

ეს იმიტომ, რომ $ ძაღლი ცვლადი ხელმისაწვდომია მხოლოდ shell level 2. თუ თქვენ აკრიფეთ გასასვლელად გასასვლელად subshell და აწარმოებს echo $ dog ერთხელ სიტყვა maisie იქნება ნაჩვენები ერთხელ.

ასევე ღირს ფიქრი გლობალური ცვლადის ქცევის შესახებ.

დაიწყე ახალი ტერმინალის ფანჯარაში და ჩაწერეთ შემდეგი:

ექსპორტის ძაღლი = maisie
ექო $ ძაღლი

როგორც თქვენ მოელით სიტყვა maisie არის ნაჩვენები. ახლა გახსნა ქვედანაყოფი და ტიპის echo $ dog ერთხელ. ამჯერად დაინახავთ, რომ სიტყვა მაისეი გამოჩნდება, მიუხედავად იმისა, რომ თქვენ იყავით ქვევით.

მიზეზი ის არის, რომ ექსპორტის ბრძანება გააკეთა $ dog ცვლადი გლობალური. $ ძაღლის ცვლადის შეცვლა ქვემხრიდან მაშინაც კი, თუ საექსპორტო ბრძანებას იყენებთ, გავლენას არ ახდენს მის მშობელ ჭურვებზე.

იმედია ამ თქვენ ხედავთ, რომ იცის ჭურვი დონეზე თქვენ სამუშაო აქვს გარკვეული მნიშვნელობა, როდესაც წერილობით სკრიპტები.

მაგალითები მივესალმები ძალიან მარტივი, მაგრამ ეს არის საკმაოდ საერთო ერთი ჭურვი სცენარი მოვუწოდებთ სხვა ჭურვი სცენარი, რომელიც, თავის მხრივ, მოუწოდებს სხვა ჭურვი სცენარი ყველა მათგანი ახლა გაშვებული სხვადასხვა დონეზე. იცის ჭურვი დონე ძალიან მნიშვნელოვანია.