Saya menggunakan "Red Hat Enterprise Linux Server rilis 7.1 (Maipo)".
Ketika saya berada di shell non-login, level shell minimum (echo $SHLVL) dimulai pada level minimum 2 dan meningkat dengan sub berturut-turut -shells.
Tetapi ketika saya menggunakan shell-login, level shell minimum (echo $SHLVL) dimulai pada shell minimum level 2 dan meningkat dengan sub-kulit yang berurutan.
[Que.] Mengapa ada perbedaan level shell minimum antara shell login (dimulai pada shell minimum level 1) dan shell non-login (dimulai pada shell minimum level 2)?
Saya menggunakan bash.
Jawaban yang Diterima:
Dari halaman manual bash:
SHLVL bertambah satu setiap kali instance bash dimulai.
Seperti yang Anda lihat, variabel ini tidak terkait dengan fakta apakah itu shell login atau bukan. Itu hanya berarti bash shell Anda telah dimulai oleh bash shell lain. Karena kami tidak tahu persis apa yang Anda lakukan untuk mendapatkan shell Anda, saya tidak bisa mengatakan mengapa Anda memiliki pemanggilan shell bersarang, tetapi berikut adalah beberapa kasus umum:
-
Anda memulai jendela terminal baru dari baris perintah
-
Anda menggunakan beberapa fitur OS untuk memulai jendela terminal baru, dan fitur ini diimplementasikan dengan memulai bash terlebih dahulu yang kemudian menjalankan terminal yang kemudian menjalankan shell baru
-
Anda memiliki
bash
rekursif panggil .bash_profile Anda yang dijalankan setiap kali SHLVL sama dengan 1 (ini terdengar aneh, tapi saya sudah melihat ini dua kali!)