Aslında doğru terime isabet ettin have. SHLVLTüm büyük etkileşimli mermilerin (bash, tcsh, zsh) başladığında 1 oranında arttığı bir ortam değişkeni vardır. Yani bir kabuk içinde bir kabuk başlatırsanız, SHLVL1 artar.
Bununla birlikte, bu doğrudan endişelerinize cevap vermez, çünkü SHLVLterminal emülatörleri gibi şeyleri taşır. Örneğin, tipik yapılandırmamda, $SHLVLxterm'de 2'dir, çünkü seviye 1 X oturumumu çalıştıran kabuğa karşılık gelir ( ~/.xinitrcveya ~/.xsession).
Yaptığım $SHLVL, benim istekte göstermem, ancak yalnızca kabuğun ana işlemi başka bir kabuksa (“adı shartı isteğe bağlı noktalama ve rakamlarla bitiyorsa , bir kabuk” gibi) sezgisel tarama ile ). Bu şekilde, başka bir kabuğun altında akan bir kabuğun nadir durumunda açık bir görsel endikasyonum var.
Belki de doğrudan bir terminal emülatörünün altında çalışan mermileri tespit etmeyi tercih edersiniz. Böylece, bu kimin ana süreç farklı bir kontrol terminali vardır kabukları şunlardır: Sen oldukça doğru yapabilirsiniz ps -o tty= -p$$ve ps -o tty= -p$PPIDfarklı bir çıktı oluşturmak. SHLVLBu mermilerde manuel olarak 1'e sıfırlayabilir veya bu mermilerde kendiniz TERMSHLVL1 olarak ayarlayabilirsiniz (ve aksi takdirde artırılabilir).
¹
kimse manuel sayfalarına bakarak düşünmek olmaz rağmen: bunu destekleyecek üç kabukları hiçbiri kendi belgelerinde sözcüğü “seviye” include SHLVL.