बैश: कितने नेस्टेड सेशन गहरे?


9

कहो मैं एक bashशेल शुरू करता हूं ,
... और फिर bashउस शेल के भीतर से एक और सत्र,
... और फिर bashउस सत्र के भीतर से एक और सत्र,
... और फिर bashउस सत्र के भीतर से एक और सत्र,
... (टाइम्स एन) आदि।

सभी एन सत्रों से बाहर निकलने के लिए मुझे exitएन बार टाइप करना होगा ।

मुझे कैसे पता चलेगा कि मैं किसी भी दिए गए बैश सत्र के भीतर से कितना गहरा हूँ?

आदर्श रूप में मैं $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

यह अच्छा है, लेकिन मैंने अपने सेटअप के साथ एक छोटी सी समस्या को देखा है: - my .xinitrc एक शेल को एक नियमित प्रक्रिया के रूप में शुरू करता है, लेकिन एक अन्य का उपयोग करके exec(ताकि जब यह टर्मिनल बंद हो जाए, तो पूरा XSession समाप्त हो जाए)। $SHLVLइन टर्मिनलों के लिए दो अलग-अलग संख्याएँ पैदा करता है। क्या एक पर्यावरण चर है जो अधिक शेल-विशिष्ट है?
tetris11

$BASH_SUBSHELLहोनहार देखा, लेकिन वितरित नहीं करता है।
tetris11

1
@ tetris11Yeah..thats कैसे SHLVLworks..check इस समाधान अगर यह फिट बैठता है ..
heemayl

1
आह, ज़ाहिर है - मैं मैन्युअल रूप से सेट कर सकते हैं SHLVL=0में ~/.xinitrc। शानदार, धन्यवाद
tetris11
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.