वे बाश में बराबर हैं कि वे ठीक वैसा ही करते हैं। दूसरी ओर, source
5 अक्षर लंबा है और POSIX- केवल गोले या बॉर्न के लिए पोर्टेबल नहीं है जबकि .
(डॉट) है, इसलिए मैं कभी भी उपयोग करने से परेशान नहीं हूं source
।
यह सही है - एक फाइल सोर्सिंग वर्तमान शेल में कमांड चलाता है और यह आपके वर्तमान शेल वातावरण को प्रभावित करेगा। आप अभी भी खट्टा फ़ाइल के लिए तर्क पारित कर सकते हैं और बैश वास्तव में $PATH
एक सामान्य आदेश की तरह फ़ाइल नाम के लिए देखेंगे यदि इसमें कोई स्लैश नहीं है।
.
बनाम के मूल प्रश्न से संबंधित नहीं है source
, लेकिन आपके उदाहरण में,
. ./myScript.sh
के समान नहीं है
source myScript.sh
क्योंकि जबकि .
और source
कार्यात्मक रूप से समान हैं, myScript.sh
और समान ./myScript.sh
नहीं हैं। चूंकि ./myScript.sh
इसमें एक स्लैश होता है, इसलिए इसे एक पथ के रूप में व्याख्या किया जाता है और शेल बस उपयोग करता है ./myScript.sh
। हालांकि, myScript.sh
एक स्लैश नहीं है इसलिए शेल $PATH
पहले इसके लिए एक खोज करता है । यह POSIX निर्दिष्ट मानक व्यवहार है .
। अधिकांश गोले इस के लिए डिफ़ॉल्ट हालांकि वे का व्यवहार बदलने के लिए (जैसे पथ खोज के बाद वर्तमान कार्यशील निर्देशिका में खोज के रूप में) एक्सटेंशन या विकल्पों जोड़ सकते हैं .
/ source
।