मैं exitखुद को टर्मिनल से बाहर निकलने से रोकने के लिए बेसिन की कार्यक्षमता को बदलने के लिए एक फ़ंक्शन लिखने की कोशिश कर रहा हूं ।
मैंने SHLVLपर्यावरण चर का उपयोग करने का प्रयास किया है, लेकिन यह उपधाराओं में नहीं लगता है:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
मेरा कार्य इस प्रकार है:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
हालांकि यह मुझे exitउप-श्रेणियों के भीतर उपयोग करने की अनुमति नहीं देगा :
$ exit
Nice try!
$ (exit)
Nice try!
यह पता लगाने के लिए एक अच्छी विधि क्या है कि मैं एक उपधारा में हूं या नहीं?
(...)जो मूल प्रक्रिया के सभी गुणों को प्राप्त करती हैं। प्रदान किए गए उत्तर आपके शेल स्तर का निर्धारण करने के लिए अधिक मजबूत समाधान हैं।
BASH_SUBSHELL(भले ही विवादास्पद) उस प्रश्न पर लागू नहीं होगा।