मैं सभी शेल चर कैसे सूचीबद्ध कर सकता हूं?


18

इस प्रश्न के बारे में पढ़ना: zsh में मैं सभी पर्यावरण चर को कैसे सूचीबद्ध कर सकता हूं? , मुझे आश्चर्य हुआ, मैं सभी शेल चर कैसे सूचीबद्ध कर सकता हूं ?

इसके अलावा, शेल चर और पर्यावरण चर के बीच का अंतर क्या zsh के अलावा गोले पर लागू होता है?

मुझे मुख्य रूप से बाश और ज़श में दिलचस्पी है, लेकिन यह जानना बहुत अच्छा होगा कि अन्य मुख्यधारा के गोले में यह कैसे करना है।

जवाबों:


21

सभी शेल चरों की सूची बनाएं

bash: का उपयोग करें set -o posix ; set। POSIX विकल्प फ़ंक्शन की परिभाषाओं जैसे बहुत अधिक जानकारी आउटपुट करने से बचने के लिए है। declare -pभी काम करता है।

zsh : उपयोग typeset

शेल चर और पर्यावरण चर

एक पर्यावरण वैरिएबल-टू exec()चाइल्ड प्रक्रियाओं के लिए उपलब्ध है (एक प्रति के रूप में। यदि पेरेंट प्रक्रिया परिवर्तनशील है, तो चाइल्ड एनवायरनमेंट अपडेट नहीं है)। एक गैर-पर्यावरण चर केवल वर्तमान में चल रहे शेल और- fork()शेड उप-भागों के लिए उपलब्ध है। यह भेद सभी गोले में मौजूद है।

(टिप्पणियों के लिए धन्यवाद)


declare -pवही करें
कोस्टास

इस सवाल का एक जवाब यहाँ भी है: stackoverflow.com/questions/1305237/…
उरईल

1
set -o posixzsh में मौजूद नहीं है; setफ़ंक्शन परिभाषाएँ आउटपुट नहीं करता है।
vinc17

1
set -o posixअधिकांश गोले में एक वाक्यविन्यास त्रुटि है।
प्रातः

3
शेल चर भी बाल प्रक्रियाओं में उपलब्ध हैं। अंतर तब आता है जब बच्चे की प्रक्रिया एक नए कार्यक्रम को निष्पादित करती है: पर्यावरण चर को पास किया जाता है exec, शेल चर नहीं होते हैं।
बरमार

7

कई विकल्प हैं:

printenv

निर्दिष्ट पर्यावरण VARIABLE (s) के मानों को प्रिंट करें। यदि कोई वार्बल निर्दिष्ट नहीं है, तो उन सभी के लिए नाम और मूल्य जोड़े प्रिंट करें।

env

env - एक प्रोग्राम को संशोधित वातावरण में चलाएं

निर्यात

एक पर्यावरण चर सेट करें। पर्यावरण में बाल प्रक्रियाओं को पारित करने के लिए प्रत्येक नाम को चिह्नित करें .....

-p प्रदर्शन आउटपुट एक ऐसे रूप में है जिसे इनपुट के रूप में पुन: उपयोग किया जा सकता है।

यदि कोई नाम नहीं दिया गया है, या यदि '-p' विकल्प दिया गया है, तो निर्यात किए गए नामों की एक सूची प्रदर्शित की जाती है।

सेट

शेल चर प्राप्त करने के लिए भी उपयोगी है।

यदि आपको अतिरिक्त जानकारी (पूर्णांक, निर्यातित) चाहिए, तो आपको इसके बजाय उपयोग करना चाहिए

टाइपसेट

निर्यात का एक फायदा है, कि इसके उत्पादन को तुरंत शेल पर वापस पढ़ा जा सकता है।

अंत में, वहाँ है

compgen -v

विकल्पों के आधार पर संभावित पूर्णताओं को प्रदर्शित करें।

जो उनके मूल्य या अतिरिक्त जानकारी के बिना सभी चर, शेल और पर्यावरण को दर्शाता है। वैरिएबल वैल्यू खोजने के लिए आपको $ VARIABLE_NAME गूंजना होगा । लेकिन कम से कम सूची पूरी हो गई है। यह के अंतर्गत आता है बैश , नहीं zsh


1
exportइसका कोई फायदा नहीं है set, कम से कम, जब यह शेल फिर से प्रवेश के लिए उद्धृत करने के लिए आता है। और printenvऔर envहालांकि इन वातावरण चर के साथ अक्सर मेल खाना करते हैं, खोल चर के बारे में बिल्कुल नहीं हैं।
mikeserv

3

इसके साथ zsh, आप उपयोग कर सकते हैं typeset, जो setकि चर के प्रकार की तुलना में अधिक जानकारी देता है । आप अभी भी आउटपुट को फ़िल्टर कर सकते हैं grepया sed, आप जो चाहते हैं उसके आधार पर। पर्यावरण चर को exportedआउटपुट के रूप में चिह्नित किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.