आपकी स्क्रिप्ट में सही export https_proxy=... लाइन है। आप उसे चलाते हैं, और अगला कमांड अब भी पुराना proxy देखता है। हो सकता है स्क्रिप्ट ने अपनी ही प्रक्रिया के भीतर बिल्कुल ठीक काम किया हो।

किसी स्क्रिप्ट को चलाना एक अलग शेल शुरू करता है। वह अपने द्वारा शुरू किए गए कमांड को वेरिएबल दे सकता है, पर बाहर निकलने के बाद मूल टर्मिनल शेल का वातावरण नहीं बदल सकता।

./set-proxy.sh
. ./set-proxy.sh

ये अलग-अलग क्रियाएँ हैं। दूसरी मौजूदा शेल में फ़ाइल पढ़ने के लिए शेल के dot बिल्टइन का उपयोग करती है। Bash इसे source भी कहता है; उसका बिल्टइन संदर्भ देखें।

केवल उसी फ़ाइल को source करें जिस पर आप भरोसा करते हैं, क्योंकि उसके सभी शेल कमांड उसी मौजूदा संदर्भ में चलते हैं। अगर proxy की ज़रूरत सिर्फ़ स्क्रिप्ट के अंदर के कमांड के लिए है, तो सामान्य रूप से चलाना सही सीमा है। एक बाहरी कमांड के लिए कमांड तक सीमित proxy असाइनमेंट मौजूदा शेल बदलने से बचाता है।

वेरिएबल असाइनमेंट शब्दशः रखें। Backtick का अर्थ कमांड प्रतिस्थापन है, उद्धरण नहीं। proxy असाइन करने वाली पंक्ति को गलती से अपना URL चलाने की कोशिश नहीं करनी चाहिए। सार्वजनिक एंडपॉइंट चुनने के लिए इच्छित मानों के लिए मुफ़्त proxy सूची ऐसे उम्मीदवार देती है जिनका प्रोटोकॉल क्लाइंट से मेल खाना चाहिए। अंत में, वे वेरिएबल नाम जाँचें जिन्हें असली नेटवर्क क्लाइंट पढ़ता है; शेल का दायरा ठीक करना किसी असमर्थित वेरिएबल को प्रभावी नहीं बनाता।

संबंधित लेख