Bash: Berapa banyak sesi bersarang yang mendalam?


9

Katakanlah saya memulai bashshell,
... dan kemudian bashsesi lain dari dalam shell itu,
... dan kemudian bashsesi lain dari dalam sesi itu,
... dan kemudian bashsesi lain dari dalam sesi itu,
... (kali N) dll

Untuk keluar dari semua sesi N saya harus mengetikkan exitN kali.

Bagaimana cara mengetahui seberapa dalam saya bersarang dari dalam setiap sesi bash yang diberikan?

Idealnya saya mencari beberapa variabel lingkungan yang mirip dengan $STYsesi layar.

Jawaban:


16

Gunakan SHLVL. Dari man bash:

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

Contoh:

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

Ini bagus, tapi saya perhatikan ada sedikit masalah dengan pengaturan saya: - .xinitrc saya memulai satu shell sebagai proses reguler, tetapi menggunakan shell yang lain exec(sehingga ketika terminal ini ditutup, seluruh XSession berakhir). $SHLVLmenghasilkan dua nomor berbeda untuk terminal-terminal ini. Apakah ada variabel lingkungan yang lebih spesifik untuk shell?
tetris11

$BASH_SUBSHELLtampak menjanjikan, tetapi tidak memberikan.
tetris11

1
@ tetris11Yeah..thats how SHLVLwork..check solusi ini jika cocok ..
heemayl

1
Ah, tentu saja - saya dapat secara manual mengatur SHLVL=0di ~/.xinitrc. Brilliant, terima kasih
tetris11
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.