सबसे पोर्टेबल तरीका है export -p
।
export -p
निर्यात किए गए चर की सूची। यह आमतौर पर पसंद है declare -x
, अगर आपके शेल में है declare
।
बॉर्न-शैली के गोले वर्तमान में उपयोग में आने चाहिए export -p
, क्योंकि यह पोसिक्स द्वारा आवश्यक है :
जब -p निर्दिष्ट किया जाता है, तो निर्यात मानक आउटपुट को सभी निर्यात किए गए चर के नाम और मूल्यों को निम्न प्रारूप में लिखेगा:
"export %s=%s\n", <name>, <value>
यदि नाम सेट है, और:
"export %s\n", <name>
अगर नाम परेशान है।
मानक यह समझाने के लिए जाता है कि चर का मूल्य इस तरह से प्रदर्शित किया जाता है कि आमतौर पर इसे =
एक असाइनमेंट में दाईं ओर बाद में उपयोग करने की अनुमति मिलती है । यह कहना है कि यह उद्धृत किया जा सकता है। अलग-अलग गोले उन्हें अलग-अलग प्रदर्शित कर सकते हैं लेकिन एक ही प्रभाव के साथ। export -p
ऐसे गोले में भी काम करता है जिसमें कोई declare
बिल्ट नहीं होता , जैसे डैश ।
$ dash -c 'export -p | grep HOME=' # busybox sh and other ash give the same output.
export HOME='/home/ek'
$ posh -c 'export -p | grep HOME=' # ksh93, mksh, lksh, and others give the same output.
export HOME=/home/ek
मैंने grep
कॉम्पैक्टनेस के लिए आउटपुट को पाइप किया है, लेकिन यदि आप इसे फ़िल्टर नहीं करते हैं तो आपको अपने निर्यात किए गए चर की पूरी सूची मिलती है। आपके सवाल से, ऐसा लगता है कि आपको सबसे उपयोगी लग सकता है।
कुछ गोले, जैसे बाश, एक गैर-मानक प्रारूप का उपयोग करते हैं जब तक कि स्पष्ट रूप से पोसिक्स-अनुरूप तरीके से व्यवहार करने का निर्देश नहीं दिया जाता है। बैश में डिफ़ॉल्ट export -p
रूप declare -x
से एक ही आउटपुट देता है ।
$ bash -c 'export -p | grep HOME='
declare -x HOME="/home/ek"
$ bash -c 'POSIXLY_CORRECT= export -p | grep HOME='
export HOME="/home/ek"
$ bash -c 'set -o posix; export -p | grep HOME='
export HOME="/home/ek"
$ bash --posix -c 'export -p | grep HOME='
export HOME="/home/ek"
$ ln -s /bin/bash sh
$ ./sh -c 'export -p | grep HOME=' # Invoking bash as sh also puts it in POSIX mode.
export HOME="/home/ek"
POSIX संगतता सक्षम होने पर भी Zsh एक गैर-मानक प्रारूप दिखाता है:
$ zsh -c 'export -p | grep HOME='
typeset -x HOME=/home/ek
$ zsh -c 'emulate -R sh; export -p | grep HOME='
typeset -x HOME=/home/ek
$ ln -s /bin/zsh sh
$ ./sh -c 'export -p | grep HOME='
typeset -x HOME=/home/ek
किसी भी मामले में, आप उसके बाद किसी शब्द की खोज करके पोर्टेबल अभ्यावेदन (जिसे उद्धृत किया जा सकता है) निकाल सकते हैं =
। यह लाइन पर पिछले शब्दों पर भरोसा नहीं करता है, इसलिए जब तक वे तुरंत पूर्ववर्ती न हों =
, जो उन्हें नहीं करना चाहिए। उदाहरण के लिए:
% export -p | grep -oE '\w+=.*'
HOME=/home/ek
LANG=en_US.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
....
ध्यान दें कि नहीं सभी प्रविष्टियों जरूरी है =
। इसका कारण यह है कि वेरिएबल परेशान हो सकता है लेकिन निर्यात किया जा सकता है। उन प्रविष्टियों को grep
ऊपर दिए गए आदेश द्वारा फ़िल्टर किया जाता है , जो आप चाहते हैं या नहीं हो सकते हैं।
अधिकांश समय, आप सिर्फ उत्पादन का निरीक्षण करना चाहते हैं और इसलिए आप परवाह नहीं करेंगे प्रविष्टियों से पहले कर रहे हैं export
, declare -x
, typeset -x
, या कुछ और। फिर बस दौड़ो export -p
।
मैंने उबंटू 16.04 LTS पर प्रत्येक शेल के आधिकारिक रूप से पैक किए गए संस्करणों के साथ उन कमांडों का परीक्षण किया ।