मुझे पता है कि source
और .
वही काम करते हैं, और मुझे यह जानकर आश्चर्य होगा कि शीर्षक में कमांड के अन्य जोड़े एक ही चीज़ नहीं हैं (क्योंकि मैं अपने खोल के रूप में बैश चला रहा हूं, $SHELL [script]
और bash [script]
बराबर हैं, है ना ??)।
तो स्क्रिप्ट निष्पादित करने के तीन तरीकों के बीच क्या अंतर है? मैं पूछ रहा हूं क्योंकि मैंने अभी सीखा है कि एक स्क्रिप्ट सोर्सिंग NOT the exact same इसे निष्पादित करने के रूप में है। इस तरह से मुझे अपने "प्रयोगों" को चलाने और मैन पेज पढ़ने से स्पष्ट नहीं मिला।
अन्य सूक्ष्म मतभेद क्या हैं जो मुझे इन कार्यों को अविश्वसनीय रूप से सरल लिपियों पर बुलाकर नहीं मिला? उपर्युक्त उत्तर पढ़ने के बाद, मैं दृढ़ता से अनुमान लगा सकता हूं कि मेरे प्रश्न का उत्तर काफी सरल व्याख्या होगा, लेकिन इस तरह से मैं लगभग पूरी तरह से अपने आप को कभी नहीं खोजूंगा।
यहाँ "प्रयोग" है मैंने किया:
$. myScript.sh
"This is the output to my script. I'd like to think it's original."
$source myScript.sh
"This is the output to my script. I'd like to think it's original."
$bash myScript.sh
"This is the output to my script. I'd like to think it's original."
$$SHELL myScript.sh
"This is the output to my script. I'd like to think it's original."
$./myScript.sh
"This is the output to my script. I'd like to think it's original."
$myScript.sh
"This is the output to my script. I'd like to think it's original."
आह, धन्यवाद! तो मैं एक अलग खोल (कह सकता हूं, सीएसएच) चला सकता हूं, और अभी भी 'bash [script]' कॉल कर सकता हूं। शेबांग के बारे में जोड़ा गया हिस्सा दिलचस्प था! तो "$ SHELL [स्क्रिप्ट]" शेबैंग को अनदेखा भी करेगा। एक और चीज जिसे मैंने अभी महसूस किया था, यह था कि मेरे प्रयोगों को चलाने के दौरान मैं जिस निर्देशिका में था, वह मेरे $ PATH चर में था। अगर ऐसा नहीं होता, तो "[स्क्रिप्ट]" बस काम नहीं करता। वाह।इस तरह के एक समान उत्पादन के लिए मतभेदों का एक टन है। –
@AriSweedler: यह सही है। ध्यान दें कि कुछ टूल * आपके वर्तमान खोल को अनदेखा करते हैं, और डिफ़ॉल्ट रूप से '/ bin/sh' तक * जब तक स्पष्ट रूप से * अन्यथा नहीं बताया जाता है (उदाहरण के लिए crontab और बनाना)। – DevSolar
टिप्पणियां: 'स्रोत' एक बशर्मी है,'। 'पॉज़िक्स है; '$ SHELL' आपके खोल के अलावा किसी अन्य चीज़ में विस्तारित हो सकता है (उदाहरण के लिए, डैश चलाने पर यह'/bin/bash' है)। –