बैश मैनुअल कहते हैं (मैनपेज, मेरा जोर):
जब बैश एक बाहरी कमांड को आमंत्रित करता है, तो चर कमांड
$_
के पूर्ण पथनाम पर सेट हो जाता है और अपने वातावरण में उस कमांड पर जाता है।
और ( विशेष पैरामीटर ):
_
(
$_
, एक अंडरस्कोर।) शेल स्टार्टअप पर, शेल या शेल स्क्रिप्ट को लागू करने के लिए उपयोग किए जाने वाले पूर्ण पथनाम पर सेट किया जाता है, जिसे पर्यावरण या तर्क सूची में पारित किया जाता है। इसके बाद, विस्तार के बाद पिछले तर्क के अंतिम तर्क तक फैलता है। साथ ही निष्पादित किए गए प्रत्येक कमांड को लागू करने के लिए उपयोग किए गए पूर्ण पथनाम पर सेट है और उस कमांड को निर्यात किए गए वातावरण में रखा गया है। मेल की जाँच करते समय, यह पैरामीटर मेल फ़ाइल का नाम रखता है।
बैश शेल में, मैं दौड़ता हूं:
$ bash $ export | grep '_='
मैनुअल के अनुसार,
_
नए बैश शेल का एक पर्यावरण चर होना चाहिए।export
नए बैश शेल के सभी पर्यावरण चर का उत्पादन करने वाला है, लेकिन यह आउटपुट नहीं करता है_
। तो मुझे आश्चर्य है कि क्या_
नए बैश शेल का एक पर्यावरण चर है?वास्तव में किसी भी बैश शेल में, वही होता है
$ export | grep '_='
कुछ भी आउटपुट नहीं करता है। तो मुझे आश्चर्य होता
_
है कि क्या कभी बैश शेल का एक पर्यावरण चर है?तुलना के लिए:
$ dash $ export | grep '_=' export _='/bin/dash'
मेरी पोस्ट माइक की टिप्पणी और स्टीफन के जवाब से प्रेरित है ।
bash -c export | grep _=
(बैश से), यह दिखाएगा कि माता-पिता ने bash
कमांड को कैसे लागू किया है , भले ही $_
माता-पिता में परेशान हों।
export
एक बिलिन है, लेकिन यदि आप उपयोग करते हैंprintenv _
, तो यह आपको दिखाएगा कि यह कैसे लागू किया गया था:/usr/bin/printenv
इस प्रणाली पर।