Aslında doğru terime isabet ettin have. SHLVL
Tü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, SHLVL
1 artar.
Bununla birlikte, bu doğrudan endişelerinize cevap vermez, çünkü SHLVL
terminal emülatörleri gibi şeyleri taşır. Örneğin, tipik yapılandırmamda, $SHLVL
xterm'de 2'dir, çünkü seviye 1 X oturumumu çalıştıran kabuğa karşılık gelir ( ~/.xinitrc
veya ~/.xsession
).
Yaptığım $SHLVL
, benim istekte göstermem, ancak yalnızca kabuğun ana işlemi başka bir kabuksa (“adı sh
artı 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$PPID
farklı bir çıktı oluşturmak. SHLVL
Bu mermilerde manuel olarak 1'e sıfırlayabilir veya bu mermilerde kendiniz TERMSHLVL
1 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
.