सभी चर नामों और उनके वर्तमान मूल्यों को कैसे सूचीबद्ध किया जाए?
जिसमें न केवल आदि $HOME
, $PWD
बल्कि आपके द्वारा परिभाषित किसी भी अन्य को शामिल किया गया है।
सभी चर नामों और उनके वर्तमान मूल्यों को कैसे सूचीबद्ध किया जाए?
जिसमें न केवल आदि $HOME
, $PWD
बल्कि आपके द्वारा परिभाषित किसी भी अन्य को शामिल किया गया है।
जवाबों:
बश के लिए: (उबंटू में मानक शेल)
सभी पर्यावरण चर को मुद्रित करने के लिए टर्मिनल में निम्न कमांड दर्ज करें:
printenv
इस आदेश के बारे में अधिक जानकारी के लिए, printenv
मैन पेज पढ़ें ।
"शेल चरों" सहित एक सूची दिखाने के लिए आप अगले कमांड में प्रवेश कर सकते हैं:
( set -o posix ; set ) | less
यह आपको न केवल शेल वेरिएबल्स दिखाएगा , बल्कि पर्यावरण चर भी।
इस विषय से संबंधित अधिक जानकारी के लिए पढ़ें:
Zsh के लिए: एक उन्नत शेल)
निम्नलिखित आदेश का उपयोग करें:
( setopt posixbuiltin; set; ) | less
ZSH विकल्पों के बारे में अधिक जानकारी के लिए, zshoptions
मैन पेज देखें ।
MYNEWVARIABLE=Ubuntu
और निष्पादित printenv
करता हूं तो यह वहां नहीं दिखता है। ऐसा क्यों है, और वे अन्य लोग कैसे दिखाते हैं?
export MYNEWVARIABLE=Ubuntu
और यह आपकी अपेक्षा के अनुरूप काम करेगा।
set
, तो यह आपके द्वारा बनाए गए चर को भी सूचीबद्ध करता है। या करते हैंset | grep myvar
printenv
एक बाहरी कमांड है, इसलिए यह केवल (और प्रिंट) निर्यात किए गए पर्यावरण चर के बारे में जानता है। set
एक आंतरिक बैश कमांड है, इसलिए यह सभी "शेल वेरिएबल्स" (अनएक्सपोर्टेड एनवायरनमेंट वेरिएबल्स) के साथ-साथ एक्सपोर्टेड एनवायरनमेंट वेरिएबल्स को दिखाता है।
unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW
, लेकिन यह होगा unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW
, और यह होगा unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW
। निर्यात का उपयोग करते हुए कहते हैं, "मैं जो चर स्थापित कर रहा हूं वह पर्यावरण का हिस्सा होना चाहिए जो प्रक्रियाओं में पारित हो जाता है, न कि केवल इस शेल में एक चर।" मेरा तीसरा उदाहरण कहता है "चर उस पर्यावरण का हिस्सा होना चाहिए जो THIS प्रक्रिया में पास हो जाता है, लेकिन बाद में आसपास नहीं रहता।"
मुझे पता है कि यह प्रश्न काफी पुराना है और इसका उत्तर दिया गया है, लेकिन मुझे लगता है कि मैं इसमें कुछ उपयोगी जानकारी जोड़ सकता हूं।
ऊपर वर्णित सभी विधियों में, जिस प्रक्रिया का सुझाव दिया गया है वह है:
env
,
printenv
या जो कुछ भी दिखाइन समाधानों की समस्या यह है कि आप शेल के पर्यावरण चर को देख रहे हैं जो टर्मिनल में चल रहा है । आप पर्यावरण चर को एप्लिकेशन चलाने के लिए उपलब्ध नहीं देख रहे हैं, उदाहरण के लिए, सीधे ग्राफिक इंटरफ़ेस द्वारा।
यह ध्यान देने योग्य है अगर, उदाहरण के लिए, आप पर्यावरण चर को संशोधित करने के लिए अपने ~/.profile
, या .bashrc
, .zshenv
(आपके शेल के आधार पर) का उपयोग करते हैं --- पथ के लिए निर्देशिकाओं के क्लासिक जोड़ की तरह।
ग्राफिक परिवेश में सीधे शुरू किए गए एप्लिकेशन के लिए उपलब्ध पर्यावरण चर को देखने के लिए, आप निम्न कार्य कर सकते हैं (गनोम शेल में, मुझे यकीन है कि अन्य सभी डीई में एक समान विधि है):
xterm -e bash --noprofile --norc
(या, यदि आपके पास नहीं है xterm
, तो gnome-terminal -- bash --noprofile --norc
--- टिप्पणी के लिए @Mike Nakis का धन्यवाद)।
अब आपके पास एक शेल वाला एक टर्मिनल है जो किसी भी पर्यावरण चर को नहीं जोड़ता है। आप env
अपने सभी पर्यावरण चर को सूचीबद्ध करने के लिए यहां उपयोग कर सकते हैं :
स्पष्ट रूप से नए शेल में सिस्टम फ़ाइलों द्वारा जोड़े गए पर्यावरण चर होंगे, लेकिन वे चर वैसे भी सिस्टम में सभी कार्यक्रमों के लिए (विरासत द्वारा) उपलब्ध होने चाहिए।
मैं इसे पोस्ट कर रहा हूं क्योंकि यह चौथी बार है जब मुझे इस ट्रिक को फिर से खोजना है, मेरी .pam_environment
फ़ाइल की जाँच करना । इसलिए अब मैं इसे और तेजी से खोजूंगा (और इस प्रक्रिया में, मुझे आशा है कि किसी और की मदद कर ...)
xterm -e bash --noprofile --norc
क्योंकि उबंटू को ग्राफिकल इंटरफेस के साथ शुरू करने पर स्टार्टअप फाइलें पढ़ी और निष्पादित नहीं की जाती हैं? देखें askubuntu.com/q/1025845/1471
gnome-terminal -- bash --noprofile --norc
आप declare
बिलिन के साथ सभी चर देख सकते हैं ।
declare -p
यदि आप केवल पर्यावरण चर में रुचि रखते हैं, तो उपयोग करें
declare -xp
help declare
अन्य विकल्प क्या हैं, यह देखने के लिए चलाएँ ।
POSIXLY_CORRECT=1 set
और यह उल्लेख के योग्य भी declare
है alias
(उस संदर्भ में) typeset
, एक और बैश बिलिन।
साथ टर्मिनल में वातावरण चर को सूचीबद्ध करने के CTRL+ ALT+ Tआप उपयोग कर सकते हैं env
आदेश।
उदाहरण के लिए :
[raja@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=3671
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
GLADE_PIXMAP_PATH=:
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=xfce-
DESKTOP_STARTUP_ID=
HISTSIZE=1000
XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
WINDOWID=65011716
GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
IMSETTINGS_MODULE=none
QT_GRAPHICSSYSTEM_CHECKED=1
USER=raja
आदि।
उम्मीद है की वो मदद करदे।
कॉम्पैन का उपयोग करते हुए बैश में:
compgen -v | while read line; do echo $line=${!line};done
compgen -v | while read line; do declare -p $line; done
यहां अधिकांश समाधान या तो केवल पर्यावरण चर को प्रिंट करते हैं, या इसमें दोष है कि env या (-o पॉज़िक्स; पॉज़िक्स) पार्स करने योग्य रूप में मान प्रिंट नहीं करते हैं (चर ए = $ 'a \ r \ nb' मुद्रित करने का प्रयास करें ...) ।
यहाँ एक फ़ंक्शन है जो POSIX से बचते हुए फॉर्म में सभी चर, एक चर प्रति पंक्ति को प्रिंट करेगा:
function dump_vars {
local VARNAME
compgen -v | while read -r VARNAME; do
printf "$VARNAME=%q\n" "${!VARNAME}"
done
}
Compgen -v के उपयोग को इंगित करने के लिए @tmgoblin का धन्यवाद।
env एक POSIX 7 तरीका है :
export asdf=qwer
env | grep asdf
नमूना उत्पादन:
asdf=qwer
यह केवल निर्यात किए गए चर दिखाता है: गैर-निर्यात किए गए चर को आमतौर पर "पर्यावरण चर" नहीं माना जाता है।
उस ओवर को प्राथमिकता दें printenv
, जो POSIX नहीं है। दोनों बिना तर्क के एक ही काम करते दिखते हैं: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv
env
बेहतर प्रारूपण के साथ अधिक दृश्यमान होता, और मैंने अधिक जानकारी जोड़ी।
Printenv केवल निर्यात किए गए चर को सूचीबद्ध करता है, command+ alt+ $ ("\ e $": पूर्ण-चर) सभी चर को सूचीबद्ध करेगा।