Nasıl və nə üçün $ SHLVL dəyişənini istifadə edirsiniz?

$ SHLVL dəyişən sizdən neçə mərtəbəli olduğunuzu bildirmək üçün istifadə olunur. Bununla başlasanız, başlanğıcdan başlamağa dəyər.

A Shell nədir?

Kabuk əmrləri alır və onları yerinə yetirmək üçün əsas əməliyyat sisteminə verir. Çox Linux sistemlərində shell proqramı BASH (The Bourne Again Shell) adlanır, lakin C Shell (tcsh) və KORN shell (ksh) daxil olmaqla başqaları mövcuddur.

Linux Shell'e necə giriş əldə etmək olar

Ümumiyyətlə, bir istifadəçi kimi XTerm, konsole və ya gnome-terminal kimi bir terminal emulyasiya proqramı vasitəsilə kabuk proqramı ilə qarşılıqlı əlaqə qururuq.

Openbox və ya GNOME və ya KDE kimi bir masa üstü mühit kimi bir Windows meneceri çalışırsanız, bir menyudan ya da bir çarxdan bir terminal emülatörü tapacaqsınız. Bir çox sistemdə CTRL ALT və T kısayolları da bir terminal pəncərəsi açacaq.

Alternativ olaraq başqa bir tty (teletypewriter) keçə bilərsiniz ki, bu da komanda xəttinin qabığına birbaşa çıxış təmin edir. CTRL ALT və F1 və ya CTRL ALT və F2 və s. Düymələrinə basaraq bunu edə bilərsiniz.

A Shell Səviyyəsi nədir

Bir qabda bir komanda çalıştırdığınızda, bu kabuk düzeyi deyilən bir şey çalışır. Bir qabıq içərisində başqa bir qövsü aça bilərsiniz ki, bu da onu bir altlıq və ya açan qabıqdır.

Buna görə valideyn qabığı ehtimal 1 səviyyəsindəki qabıq sayılır və uşağın qabığı bir səviyyədə 2 kabuk olacaq.

Shell səviyyəsini göstərmək üçün necə

Məqalənin başlığına əsaslanaraq sürüşmə səviyyəsi olan $ SHLVL dəyişənini istifadə edərək, hansı şəkildə deyə bilərik.

Hal-hazırda çalışır olduğunuz qabığın səviyyəsini görmək üçün:

echo $ SHLVL

Əksinə, maraqlı bir şəkildə yuxarıdakı əmrləri bir terminal pəncərəsində idarə edərsən, nəticədə döndüyünüz nəticə 2 olduğuna şaşırırsınız.

Əgər tty istifadə edərək eyni əmri çalıştırırsanız, nəticə 1 olur.

Niyə bu vəziyyətdən soruşa bilərsiniz? Yaxşı çalışdığınız masa üstü mühit kabukun üstündə işləyir. Bu mərmər 1-ci səviyyədə olacaq. Masa üstü mühit daxilində açdığınız hər hansı bir terminal pəncərəsi masaüstü mühitini açan qabığın bir uşağı olmalıdır və buna görə də qabığın səviyyəsi 2-dən başqa hər hansı bir sayda başlamaz.

Tty bir masa üstü mühitində çalışmır və buna görə də sadəcə bir səviyyədə 1 qabıqdır.

Subshells yaratmaq üçün necə

Kabuklar və subhells konsepsiyasını test etmək üçün ən asan yol aşağıda verilmişdir. Terminal pəncərəsini açın və aşağıdakıları yazın:

echo $ SHLVL

Bir terminal pəncərəsindən bildiyimiz kimi, minimum qabığın səviyyəsi 2-dir.

İndi terminal pəncərəsi daxilində aşağıdakıları yazın:

sh

Sh əmri öz qabağında işləyir və interaktiv qabıqdır, yəni qabığın içindəki qabığını və ya bir altındakı kabuğu istifadə edir.

İndi bu sözləri yenidən yazın:

echo $ SHLVL

Şüşə səviyyəsinin 3 olaraq təyin ediləcəyini görürsən. Sh komutunu subshell içərisindən işə salmaq subshell bir subshell açacaq və beləliklə, qabığın səviyyəsi 4 səviyyəsində olacaq.

Niyə Shell Səviyyəsi Əhəmiyyətlidir?

Skriptləriniz daxilində dəyişənlərin əhatə dairəsini düşünərkən qabığın səviyyəsi əhəmiyyətlidir.

Sadə bir şeylə başlayaq:

it = maisie
echo $ it

Əgər yuxarıdakı əmri bir qabda işləsəniz, maisie sözü terminal pəncərəsində göstərilir.

Aşağıdakıları yazaraq yeni bir kabuk açın:

sh

Bu əmri çalıştırdığınız təqdirdə heç bir şeyin qaytarılmadığını görürsünüz:

echo $ it

Bunun səbəbi, $ dog dəyişəninin yalnız 2-ci səviyyədə mövcud olmasıdır. Çıxış yazmaqdan çıxmaq və echo $ itini yenidən işlətmək üçün sözcüyə yenidən baxacaqsınız.

Qablıcağdakı qlobal dəyişənlərin davranışı barədə də düşünmək lazımdır.

Yeni bir terminal pəncərəsində başlayın və aşağıdakıları yazın:

ixrac it = maisie
echo $ it

Maisie sözünün göründüyünü gözlədiyiniz kimi. İndi bir subshell açın və yenidən echo $ it yazın. Bu seansa, maisie sözünün bir altbaşlı olmasına baxmayaraq da göründüyünü görəcəksiniz.

Bunun səbəbi ixrac əmrinin $ it dəyişəninin dünya səviyyəsinə çıxarılmasıdır. İhracat komutunu istifadə etsəniz, subshell içərisində $ it dəyişəninin dəyişdirilməsi ana kabuğunda heç bir təsiri yoxdur.

İnşallah bu işdə gördüyünüz qabığın səviyyəsini bilmək skript yazarkən bir əhəmiyyətə malikdir.

Verdiyim nümunələr çox sadədir, lakin bir shell skripti başqa cədvəl scriptini çağırmaq üçün çox tez-tez olur, bu da onların fərqli səviyyələrdə işlədildikləri başqa bir shell skriptini çağırır. Shell səviyyəsini bilmək çox vacib ola bilər.