Bash: มีเซสชันที่ซ้อนกันอยู่ลึกแค่ไหน?


9

สมมติว่าฉันเริ่มต้นbashเชลล์
... จากนั้นbashเซสชั่นอื่นจากภายในเชลล์นั้น
... แล้วbashเซสชั่นอื่นจากภายในเซสชั่นนั้น
... จากนั้นbashเซสชั่นอื่นจากภายในเซสชั่นนั้น
... (คูณ N) เป็นต้น

ในการออกจากเซสชัน N ทั้งหมดฉันต้องพิมพ์exitN ครั้ง

ฉันจะรู้ได้อย่างไรว่าตัวฉันเองซ้อนอยู่ลึกแค่ไหนในเซสชั่น bash ใด

นึกคิดฉันกำลังมองหาตัวแปรสภาพแวดล้อมบางอย่างที่คล้ายกับ$STYช่วงหน้าจอ

คำตอบ:


16

SHLVLใช้ จากman bash:

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

ตัวอย่าง:

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

นี่เป็นสิ่งที่ดี แต่ฉันสังเกตเห็นปัญหาเล็กน้อยเกี่ยวกับการตั้งค่าของฉัน: - .xinitrc ของฉันเริ่มเชลล์หนึ่งเป็นกระบวนการปกติ แต่อีกอันใช้exec(เพื่อที่ว่าเมื่อปิดเทอร์มินัล XSession ทั้งหมดจะสิ้นสุด) $SHLVLสร้างตัวเลขที่แตกต่างกันสองหมายเลขสำหรับเทอร์มินัลเหล่านี้ มีตัวแปรสภาพแวดล้อมที่เจาะจงเชลล์มากกว่าหรือไม่?
tetris11

$BASH_SUBSHELLดูมีแนวโน้ม แต่ไม่ส่งมอบ
tetris11

1
@ tetris11Yeah..thats วิธีSHLVLworks..check นี้การแก้ปัญหาว่ามันเหมาะกับ ..
heemayl

1
อาของหลักสูตร - ฉันสามารถตั้งค่าด้วยตนเองในSHLVL=0 ~/.xinitrcยอดเยี่ยมขอบคุณ
tetris11
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.