Anda sebenarnya telah menemukan istilah yang benar¹. Ada variabel lingkungan SHLVLyang semua shells interaktif utama (bash, tcsh, zsh) bertambah 1 saat mereka mulai. Jadi, jika Anda memulai shell di dalam shell, SHLVLmeningkat 1.
Namun, ini tidak langsung menjawab kekhawatiran Anda, karena SHLVLmembahas hal-hal seperti emulator terminal. Misalnya, dalam konfigurasi tipikal saya, $SHLVLadalah 2 dalam xterm, karena level 1 sesuai dengan shell yang menjalankan sesi X saya ( ~/.xinitrcatau ~/.xsession).
Apa yang saya lakukan adalah untuk menampilkan $SHLVLprompt saya, tetapi hanya jika proses induk dari shell adalah shell lain (dengan heuristik seperti "jika namanya berakhir dengan shtanda baca dan digit opsional, ini adalah shell"). Dengan begitu, saya memiliki indikasi visual yang jelas dalam kasus yang tidak biasa dari shell yang berjalan di bawah shell lain.
Mungkin Anda lebih suka mendeteksi kerang yang berjalan langsung di bawah terminal emulator. Anda dapat melakukan ini cukup akurat: ini adalah kerang yang proses induk memiliki terminal pengontrol yang berbeda, sehingga ps -o tty= -p$$dan ps -o tty= -p$PPIDmenghasilkan output yang berbeda. Anda dapat mengatur ulang secara manual SHLVLke 1 di shell ini, atau mengatur Anda sendiri TERMSHLVLke 1 di shell ini (dan ditambahkan sebaliknya).
¹
Meskipun orang tidak akan berpikir itu melihat halaman manual: tidak satupun dari tiga shell yang mendukungnya termasuk kata "level" dalam dokumentasi mereka SHLVL.