पॉज़िक्स-संगत तरीके से जो कई कार्यान्वयनों के साथ काम करता है, मैं उनके मूल्यों के बिना वर्तमान में परिभाषित पर्यावरण चर की सूची कैसे प्रिंट कर सकता हूं ?
कुछ कार्यान्वयनों पर (mksh, freebsd / bin / sh), बस export
स्वयं का उपयोग करके बिल फिट होगा:
$ export
FOO2
FOO
लेकिन कुछ अन्य कार्यान्वयन (बैश, ज़श, डैश) के लिए, export
मूल्य भी दर्शाता है। उदाहरण के लिए बैश के साथ:
$ export
export FOO2='as df\
asdk=fja:\
asd=fa\
asdf'
export FOO='sjfkasjfd kjasdf:\
asdkj=fkajdsf:\
:askjfkajsf=asdfkj:\
safdkj'
$ printenv | sed -n l
FOO2=as\tdf\$
asdk=fja:\$
asd=fa\$
asdf$
FOO=sjfkasjfd kjasdf:\$
asdkj=fkajdsf:\$
\t:askjfkajsf=asdfkj:\$
safdkj$
अन्य विकल्प जैसे मानों के बिना सिर्फ चर नामों को प्रिंट करने के विकल्प env
या printenv
नहीं हैं, कम से कम मैंने जिस लिनक्स और फ्रीबेसड प्लेटफ़ॉर्म पर कोशिश नहीं की है।
जागने के लिए पाइपिंग / sed / etc। या पैरामीटर विस्तार तकनीकों (उदाहरण के लिए ${foo%%=*}
) के साथ सूची को ट्रिम करना स्वीकार्य है, लेकिन इसे उन मानों के साथ काम करना होगा जो लाइनों को फैला सकते हैं =
और मूल्य में व्हाट्सएप (ऊपर उदाहरण देखें)।
विशेष रूप से शेल क्रियान्वयन के लिए विशिष्ट उत्तर दिलचस्प हैं, लेकिन मैं मुख्य रूप से ऐसी चीज़ की तलाश कर रहा हूं जो कार्यान्वयन के अनुकूल हो।
export -p
?
export -p
क्योंकि इससे आपको सभी पोसिक्स गोले में एक सुसंगत आउटपुट मिलेगा, जो आपने कहा था कि आप चाहते थे।
export -p
पहली आवश्यकता फिट नहीं है - मूल्यों के बिना सिर्फ चर नाम मुद्रण।
export -p
। मैं उस पार्सिंग को लिखने नहीं जा रहा हूं, क्योंकि सामान्य स्थिति में, यह उचित उद्धरण पार्सिंग भी करना होगा, यदि आपके पास एक चर है जिसका मूल्य कुछ ऐसा है hello\nexport var=value
। में से एक कुछ अन्य आदेशों कि आप सभी POSIX गोले में लगातार उत्पादन दे देंगे env
, लेकिन यह उत्पादन होता है कठिन है, क्योंकि यह अभाव है पार्स करने के लिए export =
बिट।
export -p
जो POSIX द्वारा निर्दिष्ट है आउटपुट को उत्पन्न करने के लिए जो शेल में इनपुट के लिए भी उपयुक्त है।