Bagaimana Dan Kenapa Anda Akan Menggunakan Variabel $ SHLVL

Pembolehubah $ SHLVL digunakan untuk memberitahu anda berapa banyak cangkang yang dalam anda. Sekiranya anda keliru dengan ini, ia layak dimulakan pada mulanya.

Apa itu Shell?

Cangkerang mengambil arahan dan memberi mereka kepada sistem operasi yang mendasari untuk melaksanakan. Pada kebanyakan sistem Linux, program shell dipanggil BASH (The Bourne Again Shell) tetapi ada yang lain termasuk C Shell (tcsh) dan shell KORN (ksh).

Bagaimana Untuk Mengakses Shell Linux

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

Jika anda menjalankan pengurus windows seperti Openbox atau persekitaran desktop seperti GNOME atau KDE anda akan mencari emulator terminal sama ada dari menu atau sengkang. Pada banyak sistem, jalan pintas CTRL ALT dan T akan membuka tetingkap terminal juga.

Sebagai alternatif, anda boleh bertukar ke tty lain (teletypewriter) yang menyediakan capaian langsung ke shell baris perintah. Anda boleh melakukan ini dengan menekan CTRL ALT dan F1 atau CTRL ALT dan F2 dll.

Apakah Tahap Shell

Apabila anda menjalankan perintah dalam shell ia berjalan pada sesuatu yang dipanggil tahap shell. Di dalam shell anda boleh membuka shell lain yang menjadikannya subkelompok atau shell yang membukanya.

Oleh itu, shell induk akan dianggap sebagai shell tahap 1 dan shell kanak-kanak akan menjadi shell tahap 2.

Bagaimana Untuk Memaparkan Tahap Shell

Ia seharusnya tidak mengejutkan berdasarkan tajuk artikel yang cara anda dapat memberitahu tahap shell yang anda jalani dengan menggunakan pembolehubah $ SHLVL.

Untuk melihat tahap shell yang sedang anda jalankan dalam jenis yang berikut:

echo $ SHLVL

Sebaliknya menarik jika anda menjalankan perintah di atas dalam tetingkap terminal anda mungkin terkejut melihat bahawa hasil yang dikembalikan adalah 2.

Sekiranya anda menjalankan perintah yang sama menggunakan tty maka hasilnya ialah 1.

Mengapa ini perkara yang anda boleh tanya? Nah persekitaran desktop yang anda jalankan sedang dijalankan di atas shell. Shell itu akan menjadi tahap 1. Setiap tetingkap terminal yang anda buka dari dalam persekitaran desktop itu harus menjadi anak dari shell yang membuka persekitaran desktop dan oleh itu paras shell tidak boleh dimulakan di mana-mana nombor selain dari 2.

Tty tidak menjalankan persekitaran desktop dan oleh itu hanya shell 1 tingkat.

Cara Mencipta Subseksyen

Cara paling mudah untuk menguji konsep kerang dan subkelompok adalah seperti berikut. Buka tetingkap terminal dan ketik perkara berikut:

echo $ SHLVL

Seperti yang kita ketahui dari tetingkap terminal paras minimum minimum ialah 2.

Sekarang dalam tetingkap jenis terminal berikut:

sh

Perintah sh sendiri menjalankan shell interaktif yang bermaksud anda menggunakan shell dalam shell atau subkelompok.

Jika anda kini taipkan lagi:

echo $ SHLVL

Anda akan melihat bahawa paras shell ditetapkan ke 3. Menjalankan perintah sh dari dalam subkelompok akan membuka subkelompok subkelompok dan jadi paras shell akan berada pada tahap 4.

Kenapa Tahap Shell Penting?

Tahap shell adalah penting apabila memikirkan skop pembolehubah dalam skrip anda.

Mari kita mulakan dengan sesuatu yang mudah:

anjing = maisie
echo $ dog

Jika anda menjalankan perintah di atas dalam shell, perkataan maisie akan dipaparkan pada tetingkap terminal.

Buka shell baru dengan menaip yang berikut:

sh

Jika anda menjalankan arahan ini, anda akan melihat bahawa tiada apa yang sebenarnya dipulangkan:

echo $ dog

Itu kerana pemboleh ubah anjing $ hanya tersedia pada tahap shell 2. Jika anda menaip keluar untuk keluar dari anak kecil dan berjalan echo $ anjing sekali lagi maisie perkataan akan dipaparkan semula.

Ia juga bernilai memikirkan kelakuan pembolehubah global dalam shell.

Mulailah di tetingkap terminal baharu dan ketik perkara berikut:

anjing eksport = maisie
echo $ dog

Seperti yang anda harapkan maisie perkataan dipaparkan. Sekarang buka subkelompok dan taip semula echo $ dog. Kali ini anda akan melihat bahawa maisie perkataan dipaparkan walaupun anda berada dalam subshell.

Alasannya ialah perintah eksport membuat global variable anjing $. Menukar pemboleh ubah anjing $ dalam subkelompok walaupun anda menggunakan arahan eksport tidak menjejaskan cangkerang induknya.

Semoga dari ini, anda dapat melihat bahawa mengetahui tahap shell yang anda kerjakan mempunyai makna penting ketika menulis skrip.

Contoh-contoh yang telah saya berikan sangat mudah tetapi agak biasa bagi satu skrip shell untuk memanggil skrip shell lain yang seterusnya memanggil skrip shell lain yang semuanya berjalan pada tahap yang berbeza. Mengetahui tahap shell boleh menjadi sangat penting.