Bagaimana Dan Mengapa Anda Akan Menggunakan Variabel $ SHLVL

Variabel $ SHLVL digunakan untuk memberi tahu Anda berapa banyak kerang yang berada dalam Anda. Jika Anda bingung dengan ini, maka hal itu perlu dimulai dari awal.

Apa itu Shell?

Sebuah shell mengambil perintah dan memberikannya kepada sistem operasi yang mendasarinya untuk melakukan. Pada kebanyakan sistem Linux, program shell disebut BASH (The Bourne Again Shell) tetapi ada yang lain yang tersedia termasuk C Shell (tcsh) dan shell KORN (ksh).

Cara Mengakses Shell Linux

Umumnya sebagai pengguna Anda berinteraksi dengan program shell melalui penggunaan program emulasi terminal seperti XTerm, konsole atau gnome-terminal.

Jika Anda menjalankan manajer windows seperti Openbox atau lingkungan desktop seperti GNOME atau KDE Anda akan menemukan emulator terminal baik dari menu atau dash. Pada banyak sistem, pintas CTRL ALT dan T akan membuka jendela terminal juga.

Atau Anda dapat beralih ke tty lain (teletypewriter) yang menyediakan akses langsung ke shell baris perintah. Anda dapat melakukan ini dengan menekan CTRL ALT dan F1 atau CTRL ALT dan F2 dll.

Apa itu Tingkat Kerang

Ketika Anda menjalankan perintah dalam shell, ia dijalankan pada sesuatu yang disebut level shell. Dalam shell Anda dapat membuka shell lain yang membuatnya menjadi subkulit atau shell yang membukanya.

Oleh karena itu shell induk akan dianggap mungkin shell level 1 dan shell anak akan menjadi shell level 2.

Cara Menampilkan Tingkat Shell

Seharusnya tidak mengherankan berdasarkan judul artikel bahwa cara Anda dapat mengetahui tingkat shell mana yang Anda jalankan adalah dengan menggunakan variabel $ SHLVL.

Untuk melihat level shell yang sedang Anda jalankan, ketikkan yang berikut:

echo $ SHLVL

Agak menarik jika Anda menjalankan perintah di atas dalam jendela terminal Anda mungkin terkejut melihat bahwa hasil yang dikembalikan adalah 2.

Namun jika Anda menjalankan perintah yang sama menggunakan tty maka hasilnya adalah 1.

Mengapa ini kasus yang mungkin Anda tanyakan? Nah lingkungan desktop yang Anda jalankan sedang dijalankan di atas shell. Cangkang itu akan menjadi level 1. Setiap jendela terminal yang Anda buka dari dalam lingkungan desktop itu harus menjadi anak cangkang yang membuka lingkungan desktop dan oleh karena itu level shell tidak dapat dimulai pada nomor apa pun selain 2.

Tty tidak menjalankan lingkungan desktop dan karena itu hanya shell level 1.

Cara Membuat Subkulit

Cara termudah untuk menguji konsep shell dan subshells adalah sebagai berikut. Buka jendela terminal dan ketik yang berikut:

echo $ SHLVL

Seperti yang kita ketahui dari jendela terminal, tingkat shell minimum adalah 2.

Sekarang dalam jendela terminal ketik yang berikut:

SH

Perintah sh sendiri menjalankan shell interaktif yang berarti Anda menggunakan shell di dalam shell atau subkulit.

Jika Anda sekarang mengetik ini lagi:

echo $ SHLVL

Anda akan melihat bahwa tingkat shell diatur ke 3. Menjalankan perintah sh dari dalam subkulit akan membuka subkulit dari subkulit dan tingkat shell akan berada di level 4.

Mengapa Tingkat Shell Penting?

Tingkat shell penting ketika memikirkan ruang lingkup variabel dalam skrip Anda.

Mari kita mulai dengan sesuatu yang sederhana:

anjing = maisie
echo $ dog

Jika Anda menjalankan perintah di atas dalam shell kata maisie akan ditampilkan ke jendela terminal.

Buka cangkang baru dengan mengetik yang berikut:

SH

Jika Anda menjalankan perintah ini, Anda akan melihat bahwa tidak ada yang benar-benar dikembalikan:

echo $ dog

Itu karena variabel $ dog hanya tersedia pada level shell 2. Jika Anda mengetik exit untuk keluar dari subkulit dan menjalankan echo $ dog lagi kata maisie akan ditampilkan lagi.

Juga layak untuk memikirkan perilaku variabel global dalam shell.

Mulailah di jendela terminal baru dan ketik yang berikut:

anjing ekspor = maisie
echo $ dog

Seperti yang Anda harapkan, kata maisie ditampilkan. Sekarang buka subkulit dan ketik echo $ dog lagi. Kali ini Anda akan melihat bahwa kata maisie ditampilkan meskipun Anda berada dalam subkulit.

Alasan untuk ini adalah bahwa perintah ekspor membuat variabel anjing $ global. Mengubah variabel $ dog dalam subkulit meskipun Anda menggunakan perintah ekspor tidak berpengaruh pada cangkang induknya.

Semoga dari ini Anda dapat melihat bahwa mengetahui tingkat shell yang Anda kerjakan memiliki beberapa arti ketika menulis skrip.

Contoh yang saya berikan sangat sederhana tetapi cukup umum untuk satu skrip shell untuk memanggil skrip shell lain yang pada gilirannya memanggil skrip shell lain yang semuanya sekarang berjalan pada level yang berbeda. Mengetahui level shell bisa sangat penting.