Nasıl ve Neden $ SHLVL Değişkenini Kullanırsınız?

$ SHLVL değişkeni, kaç tane merminin bulunduğunu size anlatmak için kullanılır. Eğer bunun kafanızı karıştırırsanız, başlangıçta başlamaya değer.

Bir Kabuk Nedir?

Bir kabuk, komutları alır ve bunları gerçekleştirmek için temel işletim sistemine verir. Çoğu Linux sisteminde kabuk programına BASH (The Bourne Again Shell) denir, ancak C Shell (tcsh) ve KORN kabuğu (ksh) dahil olmak üzere başkaları da kullanılabilir.

Linux Kabuğuna Nasıl Erişilir

Genellikle bir kullanıcı olarak XTerm, konsole veya gnome-terminal gibi bir terminal öykünme programı kullanarak kabuk programı ile etkileşime girersiniz.

Openbox veya GNOME ya da KDE gibi bir masaüstü ortamı gibi bir windows yöneticisi çalıştırıyorsanız, bir menüden ya da bir tire'den bir terminal emülatörü bulacaksınız. Birçok sistemde, kısayol CTRL ALT ve T bir terminal penceresi açacaktır.

Alternatif olarak, bir komut satırı kabuğuna doğrudan erişim sağlayan başka bir tty'ye (teletypewriter) geçebilirsiniz. CTRL ALT ve F1 veya CTRL ALT ve F2 vb. Tuşlarına basarak bunu yapabilirsiniz.

Kabuk Seviyesi Nedir

Bir kabukta bir komut çalıştırdığınızda, kabuk düzeyi denen bir şeyle çalışır. Bir kabuk içinde bir alt kabuk ya da onu açan bir kabuk haline getiren başka bir kabuk açabilirsiniz.

Bu nedenle, ana kabuk belki de seviye 1 kabuk olarak kabul edilecektir ve çocuk kabuğu bir seviye 2 kabuğu olacaktır.

Kabuk Seviyesi Nasıl Görüntülenir?

Makalenin başlığına göre, hangi kabuk seviyesinde çalıştığınızı söyleyebilmeniz, $ SHLVL değişkenini kullanarak sürpriz olmamalıdır.

Şu anda çalıştırdığınız kabuk düzeyini görmek için aşağıdakini yazın:

echo $ SHLVL

Oldukça ilginç bir şekilde, yukarıdaki komutu bir terminal penceresinde çalıştırırsanız, sonuç 2'nin döndüğünü gördüğünüzde şaşırabilirsiniz.

Ancak tty'yi kullanarak aynı komutu çalıştırırsanız sonuç 1'dir.

Neden böyle bir soru sorabilirsin? Peki, koştuğunuz masaüstü ortamı bir kabuğun üstünde çalışıyor. Bu kabuk, seviye 1 olacaktır. Bu masaüstü ortamından açtığınız herhangi bir terminal penceresi, masaüstü ortamını açan kabuğun bir alt öğesi olmalıdır ve bu nedenle kabuk seviyesi, 2'den başka herhangi bir sayıdan başlayamaz.

Tty bir masaüstü ortamı çalıştırmıyor ve bu nedenle sadece bir seviye 1 kabuk.

Subshells Nasıl Oluşturulur

Kabuk ve alt kabuk kavramını test etmenin en kolay yolu aşağıdaki gibidir. Bir terminal penceresi açın ve aşağıdakileri yazın:

echo $ SHLVL

Bir terminal penceresinden bildiğimiz gibi, minimum kabuk seviyesi 2'dir.

Şimdi terminal penceresinde aşağıdakileri yazın:

sh

Sh komutu kendi başına interaktif bir kabuk çalıştırır, yani kabuk veya kabuk içinde bir kabuk kullandığınız anlamına gelir.

Şimdi bunu tekrar yazarsanız:

echo $ SHLVL

Kabuk seviyesinin 3'e ayarlandığını göreceksiniz. Alt komutun içinden gelen sh komutunun çalıştırılması alt kabuğun bir alt kabuğunu açacak ve böylece kabuk seviyesi 4. seviyede olacaktır.

Kabuk Seviyesi Neden Önemlidir?

Kabuk seviyesi, komut dosyalarınızdaki değişkenlerin kapsamını düşünürken önemlidir.

Basit bir şeyle başlayalım:

Köpek = maisie
echo $ köpek

Yukarıdaki komutu bir kabukta çalıştırırsanız, maisie kelimesi terminal penceresine görüntülenecektir.

Aşağıdakileri yazarak yeni bir kabuk açın:

sh

Bu komutu çalıştırırsanız, hiçbir şeyin gerçekten iade edilmediğini görürsünüz:

echo $ köpek

Bunun nedeni $ dog degiskeninin sadece kabuk 2 seviyesinde mevcut olmasidir. Subshell'ten çikmak için exit yazip tekrar dogru dogru dogru çalisirsaniz maisie tekrar görüntülenecektir.

Bir kabuk içindeki küresel değişkenlerin davranışı hakkında düşünmeye değer.

Yeni bir terminal penceresinde başlayın ve aşağıdakileri yazın:

ihracat köpek = maisie
echo $ köpek

Tahmin edeceğiniz gibi maisie kelimesi görüntülenir. Şimdi bir alt kabuk açın ve echo $ köpeği tekrar yazın. Bu sefer maisie kelimesinin bir alt kabuğunda olsanız bile görüntüleneceğini göreceksiniz.

Bunun nedeni, dışa aktarma komutunun $ dog değişkenini global hale getirmesidir. Dışa aktarma komutunu kullansanız bile alt kabuktaki $ dog değişkenini değiştirmek, ana kabuklarında herhangi bir etki yaratmaz.

Umarım bundan böyle çalıştığınız kabuk seviyesini bilmek, yazı yazarken biraz anlam kazanır.

Verdiğim örnekler çok basit, ancak bir kabuk betiğinin, şu anda farklı seviyelerde çalışan başka bir kabuk senaryosunu çağırdığı başka bir kabuk betiğini çağırması oldukça yaygın. Kabuk seviyesini bilmek çok önemli olabilir.