ऐसा लगता है कि आपके सिस्टम में शेल का साधारण आह्वान उर्फ (या फ़ंक्शन) को विरासत में नहीं मिला है, जिसके साथ परिभाषित किया गया है module, इसलिए शेल इसे खोजने में सक्षम नहीं है (अंश के साथ नोट के नीचे देखें)। यह type moduleकैसे moduleवर्तमान में परिभाषित किया गया है यह देखने के लिए संकेत से प्रयास करें ।
स्रोत के साथ अनिवार्य रूप से ऐसा है यदि आप कीबोर्ड से स्क्रिप्ट की प्रत्येक पंक्ति लिखते हैं।
ध्यान दें कि एक तरफ आप वर्तमान शेल के सभी विशिष्ट इतिहास को प्राप्त कर रहे हैं, लेकिन दूसरी तरफ, वर्तमान शेल को आपकी स्क्रिप्ट और moduleमंगलाचरण के सभी पक्षों के प्रभाव के अधीन किया जाएगा ।
एक स्क्रिप्ट के स्रोत और इसे निष्पादित करने के बीच अंतर के बारे में आप सुपरयूजर सितंबर 2009 या दिसंबर 2009 , उबंटू फरवरी 2011 , यूनिक्स अगस्त 2011 , स्टैकवॉटरफ़्लो 2012 या कई अन्य स्थानों पर पढ़ सकते हैं।
इस मॉड्यूल के खंड में इस संबंध में एक चेतावनी है :
... मॉड्यूल चर को उतारने पर पर्यावरण चर अप्रभावित होते हैं। इस प्रकार, एक मॉड्यूलफाइल को लोड करना संभव है और फिर पर्यावरणीय चर को उनके पूर्व स्थिति में लौटने के बिना इसे अनलोड करना संभव है ।
इसलिए इसे एक स्क्रिप्ट में निष्पादित करना अधिक बुद्धिमान लगता है ।
उत्तरार्द्ध को पूरा करने के लिए मैं सोच सकता हूं:
एक इंटरेक्टिव शेल का उपयोग करने के लिए , वर्तमान शेल के विशिष्ट इतिहास की उपेक्षा करते हुए, अपनी स्क्रिप्ट के शेबंग को संशोधित करना
#!/bin/bash -i
एक इंटरएक्टिव शेल एक ट्टी पर उपयोगकर्ता इनपुट से कमांड पढ़ता है। अन्य बातों के अलावा, ऐसा शेल सक्रियण पर स्टार्टअप फ़ाइलों को पढ़ता है, एक शीघ्रता प्रदर्शित करता है, और डिफ़ॉल्ट रूप से नौकरी नियंत्रण को सक्षम करता है ...
यदि इसके बजाय आप वर्तमान शेल की विशिष्ट कहानी को विरासत में लेना पसंद करते हैं, तो आप इसे स्रोत करने का प्रयास कर सकते हैं ... लेकिन एक उपधारा में
( source runit.sh )
की वर्तमान उर्फ / समारोह खोजने की कोशिश करें moduleके साथ type moduleतो अपनी स्क्रिप्ट परिणाम में बदलाव लाते हैं। नोट कुछ पर्यावरण चर के लिए सेट नहीं किया जा सकता है module।
आप चाहें तो डायरेक्टरी में इनिशियलाइज़ेशन स्क्रिप्ट पा सकते हैं $MODULESHOME/init/<shell>।
मॉड्यूल
के प्रश्नोत्तर में याद किया गया टिप्पणी
एक बच्चे की प्रक्रिया (स्क्रिप्ट) मूल प्रक्रिया के वातावरण को नहीं बदल सकती है। एक स्क्रिप्ट में एक मॉड्यूल लोड केवल स्क्रिप्ट के लिए पर्यावरण को प्रभावित करता है। जिस तरह से आप एक स्क्रिप्ट को बदल सकते हैं वर्तमान वातावरण को स्क्रिप्ट को स्रोत करने के लिए है जो इसे वर्तमान प्रक्रिया में पढ़ता है।
इसलिए यदि आप वर्तमान परिवेश को संशोधित करने से बचना चाहते हैं, तो मुझे लगता है कि शेबंग (1) को बदलने की कोशिश करना बेहतर होगा या स्क्रिप्ट को एक उपधारा (2) में बदलना चाहिए । मैं मामले की प्रयोज्यता (3) के बारे में पूरी तरह सुनिश्चित नहीं हूं।
नोट मॉड्यूल के
मैनुअल और विवरण पृष्ठों से अंश
moduleमॉड्यूल पैकेज के लिए एक यूजर इंटरफेस है। moduleउपनाम या समारोह कार्यान्वित modulecmdकार्यक्रम और शेल कमांड के उत्पादन का मूल्यांकन है। पहला तर्क modulecmdशेल के प्रकार को निर्दिष्ट करता है।
मॉड्यूल-पैकेज और moduleकमांड को तब आरंभ किया जाता है जब शेल-विशिष्ट इनिशियलाइज़ेशन स्क्रिप्ट को शेल में सॉर्ट किया जाता है । स्क्रिप्ट मॉड्यूल कमांड बनाता है, या तो एक उपनाम या शेल फ़ंक्शन के रूप में, मॉड्यूल वातावरण चर बनाता है