बिना पर्यावरण चर के साथ शेल स्क्रिप्ट चलाना


17

जैसा कि मैं जानता हूं, नई चल रही शेल स्क्रिप्ट पर्यावरण चर है। क्या इसे ब्लॉक करने का कोई तरीका है? (चर विरासत के बिना शेल चल रहा है)

जवाबों:


21

ऐसा लगता है कि आप अपनी स्क्रिप्ट को उपसर्ग कर सकते हैं env -iजिसके साथ स्क्रिप्ट चलाने से पहले पर्यावरण को साफ कर देंगे:

env -i sh test.sh

से man env:

-i, --ignore-environment
              start with an empty environment

यकीन नहीं होता कि आप ऐसा क्यों करना चाहेंगे ...


धन्यवाद। यह काम किया! आईडीई के विन्यास पर्यावरण चर को प्रभावित किए बिना आईडीई में बिल्ड स्क्रिप्ट को कॉल करने के लिए मुझे इसकी आवश्यकता है। लेकिन अभी भी लक्ष्य के लिए दूर है। यह आपकी उत्सुकता में मदद कर सकता है!
Eonil

एक और उपयोग के मामले को जोड़ने के लिए: मैं वर्तमान में मछली और ज़ीश को बैश के विकल्प के रूप में मूल्यांकन कर रहा हूं। लेकिन मैं अपने लॉगिन शेल के रूप में उम्मीदवार शेल को बढ़ावा देने के लिए बिल्कुल तैयार नहीं हूं (जैसा कि chsh ...अगर मैं सिर्फ एक टर्मिनल विंडो खोलता हूं और चला जाता हूं zshया fish(साथ या बिना -lकोई फर्क नहीं पड़ता) यह मेरे वातावरण को सभी प्रकार के चर से प्रदूषित करता है शेल मैंने इसे शुरू किया। env -cमेरे साथ इस समस्या को हल करने की कोशिश करना env -i TERM=xterm-256color $(which fish)। मैं करता हूं ।
पेधी

यह उपयोगी है यदि आपके पास एक क्रोन कार्य है जो विफल हो रहा है क्योंकि पर्यावरण ठीक से कॉन्फ़िगर नहीं किया गया है और आपको इसका परीक्षण करने की आवश्यकता है; यह भी जांचने का एक अच्छा तरीका है कि क्या आपकी स्क्रिप्ट पर्यावरण सेटिंग्स के बारे में धारणा बनाती है। धन्यवाद!
razzed

एक और संभावित जगह जो उपयोगी हो सकती है, वह यह सुनिश्चित करने के लिए कुछ आवधिक नौकरियों (जैसे क्रोन नौकरियों) का परीक्षण कर रही है ताकि यह सुनिश्चित हो सके कि स्क्रिप्ट पर कोई पर्यावरण निर्भरता नहीं है। आदेशों के साथ एक ही बात जो कठपुतली के प्रदर्शन में "एक्ज़ेक" संसाधन में चलेगी।
टॉमी कीकिड

1

एक संभावना (हालांकि यह बदसूरत दिखती है):

exec -c $SCRIPTएक खाली वातावरण के साथ $ SCRIPT शुरू करेगा। ( man bashखोज के लिए देखें exec \[-cl\])।


1
यह लगभग समान रूप से एनवी-आई के साथ काम करता है, हालांकि, मैं एनवी-आई का उपयोग करना चुनता हूं क्योंकि स्क्रिप्ट के बाकी हिस्सों को निष्पादित करना बंद हो जाता है।
Eonil

-1

जहाँ तक मुझे पता है, जवाब "नहीं" है। आप स्क्रिप्ट के भीतर ही पर्यावरण चर को ओवरराइड कर सकते हैं। स्क्रिप्ट चलने के बाद पर्यावरण चर का मान वापस मूल मूल्य पर आ जाना चाहिए। आपको संभवतः एक चाइल्ड प्रोसेस के रूप में स्क्रिप्ट को चलाने की आवश्यकता है: $ this.script.sh और इसलिए अपने शेल से लॉग आउट करने से बचने के लिए कभी भी स्क्रिप्ट को चलाने के लिए अपने पर्यावरण चर को उनके मूल मान पर रीसेट करने के लिए।

संपादित करें:

पहले के पोस्टर से, ऐसा लगता है कि मैं इसके बारे में गलत हूं जो संभव नहीं है।

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