Bash: İç içe kaç seans derin?


9

Diyelim ki bir bashkabuk başlatıyorum ,
... ve sonra basho kabuktaki
başka bir bashoturuma,
... ve sonra basho oturumdaki başka bir oturuma , ... ve sonra o oturumdaki başka bir oturuma,
... (N kere) vb.

Tüm N oturumlarından çıkmak için exitN kez yazmam gerekiyor.

Herhangi bir bash oturumunda ne kadar derinden iç içe olduğumu nasıl öğrenebilirim?

İdeal olarak $STYekran oturumlarına benzer bir ortam değişkeni arıyorum .

Yanıtlar:


16

Kullanın SHLVL. Gönderen man bash:

SHLVL  Incremented by one each time an instance of bash is started.

Misal :

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3

Bu iyi, ama benim kurulum ile küçük bir sorun fark ettim: - .xinitrc bir kabuk düzenli bir işlem olarak başlar, ama başka bir kullanarak exec(böylece bu terminal kapatıldığında, tüm XSession biter). $SHLVLbu terminaller için iki farklı sayı üretir. Kabuğa özgü bir ortam değişkeni var mı?
tetris11

$BASH_SUBSHELLumut verici görünüyordu, ama teslim etmiyor.
tetris11

1
@ tetris11Yeah..thats nasıl SHLVLçalışır .. eğer uyuyorsa bu çözümü kontrol edin ..
heemayl

1
Ah tabii ki - ben elle ayarlayabilirsiniz SHLVL=0içinde ~/.xinitrc. Brilliant, thanks
tetris11
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.