आप वास्तव में सही टर्म पर हिट हैं। एक पर्यावरण चर है SHLVL
जो सभी प्रमुख संवादात्मक गोले (बाश, tsh, zsh) 1 से वृद्धि करते हैं जब वे शुरू करते हैं। इसलिए यदि आप एक शेल के अंदर एक शेल शुरू करते हैं, तो SHLVL
1 से बढ़ जाता है।
हालांकि, यह सीधे आपकी चिंता का जवाब नहीं देता है, क्योंकि SHLVL
टर्मिनल एमुलेटर जैसी चीजों पर काम करता है। उदाहरण के लिए, मेरे विशिष्ट विन्यास में, $SHLVL
एक एक्सटर्म में 2 है, क्योंकि स्तर 1 मेरे एक्स सत्र ( ~/.xinitrc
या ~/.xsession
) को चलाने वाले शेल से मेल खाती है ।
मैं $SHLVL
अपने प्रॉम्प्ट में प्रदर्शित करने के लिए क्या कर रहा हूं, लेकिन केवल अगर शेल की मूल प्रक्रिया एक और शेल है ("जैसे नाम के साथ यदि इसका नाम sh
प्लस वैकल्पिक विराम चिह्न और अंकों में समाप्त होता है , तो यह एक शेल है")। इस तरह, मेरे पास एक शेल के दूसरे मामले में चल रहे असामान्य मामले में एक स्पष्ट दृश्य संकेत है।
शायद आप ऐसे शेल का पता लगाना पसंद करेंगे जो एक टर्मिनल एमुलेटर के तहत सीधे चल रहे हैं। ताकि इन गोले जिसकी मूल प्रक्रिया एक अलग नियंत्रित टर्मिनल है कर रहे हैं,: आप इस तरह सटीक रूप से कर सकते हैं ps -o tty= -p$$
और ps -o tty= -p$PPID
विभिन्न उत्पादन का उत्पादन। आप SHLVL
इन गोले में मैन्युअल रूप से 1 पर रीसेट कर सकते हैं, या इन गोले में अपना खुद TERMSHLVL
का 1 सेट कर सकते हैं (और अन्यथा बढ़ा हुआ)।
¹
यद्यपि कोई यह नहीं सोचता कि यह मैनुअल पृष्ठों को देख रहा है: इसके समर्थन में तीन स्तरों में से कोई भी शब्द "स्तर" में शामिल नहीं है SHLVL
।