यह एक "के रूप में अगर" नियम है।
सीधे शब्दों में कहें: उपयोगकर्ताओं द्वारा देखे जाने पर शेल का व्यवहार बदल नहीं सकता है यदि कार्यान्वयन एक मानक बाहरी कमांड को शेल-इन-इन के रूप में भी उपलब्ध कराने का निर्णय लेता है।
इसके विपरीत जो मैंने /unix//a/496291/5132 पर (एक ओर) पीडी कॉर्न, मीरबीडीस कोर्न, और हिरलूम बॉर्न गोले के व्यवहारों के बीच दिखाया था ; (दूसरी ओर) जेड, 93 कोर्न, बॉर्न अगेन, और डेबियन अल्मक्विस्ट गोले; और (ग्रिपिंग हैंड पर) वतनबे शेल ने इस पर प्रकाश डाला।
गोले की जरूरत नहीं है कि के लिए printf
के रूप में एक में निर्मित, को हटाने /usr/bin
से PATH
की एक मंगलाचरण बनाता है printf
काम करना बंद कर। POSIX अनुरूप व्यवहार, वातानाबे खोल द्वारा अपने अनुरूप मोड में प्रदर्शित किया जाता है, उसी परिणाम का कारण बनता है। शेल का व्यवहार जिसमें एक printf
अंतर्निहित है, जैसे कि यह एक बाहरी कमांड को लागू कर रहा हो।
जबकि सभी गैर-अनुरूप गोले के व्यवहार /usr/bin
को हटा दिया जाता है PATH
, तो वे बदल नहीं जाते हैं , और वे ऐसा व्यवहार नहीं करते हैं जैसे कि वे एक बाहरी आदेश को लागू कर रहे थे।
मानक आपको क्या गारंटी देने की कोशिश कर रहा है कि गोले सामान्य रूप से बाहरी कमांड के सभी प्रकार के निर्माण कर सकते हैं (या उन्हें अपने स्वयं के शेल फ़ंक्शन के रूप में लागू कर सकते हैं), और आपको अभी भी बिल्ट-इन से वैसा ही व्यवहार मिलेगा जैसा आपने किया था बाहरी आदेशों के साथ यदि आप PATH
आदेशों को मिलने से रोकने के लिए समायोजित करते हैं। PATH
जो आप आदेश दे सकते हैं, उसे चुनने और नियंत्रित करने के लिए आपका टूल बना हुआ है।
(जैसा कि /unix//a/448799/5132 पर बताया गया है , वर्षों पहले लोगों ने अपने यूनिक्स के व्यक्तित्व को बदलकर चुना था कि यह क्या था PATH
।)
कोई भी यह कह सकता है कि कमांड को हमेशा इस बात पर ध्यान दिए बिना काम करना चाहिए कि क्या यह पाया जा सकता PATH
है, वास्तव में बाहरी कमांड को सामान्य रूप से बनाने की बात है। (यही कारण है कि मेरे नोश टूलसेट ने printenv
वास्तव में संस्करण 1.38 में एक अंतर्निहित कमांड प्राप्त की । हालांकि यह एक शेल नहीं है।)
लेकिन मानक आपको गारंटी दे रहा है कि आप नियमित बाहरी कमांड के लिए वही व्यवहार देखेंगे जो PATH
शेल से नहीं हैं जैसा कि आप अन्य गैर-शेल प्रोग्राम से देखेंगे जो execvpe()
फ़ंक्शन को आमंत्रित कर रहे हैं, और शेल जादुई रूप से सक्षम नहीं होगा (जाहिरा तौर पर) साधारण बाहरी आदेशों को चलाएं जो अन्य कार्यक्रमों के साथ नहीं मिल सकते हैं PATH
। उपयोगकर्ता के दृष्टिकोण से सब कुछ स्व-लगातार काम करता है, और PATH
यह कैसे काम करता है इसे नियंत्रित करने के लिए उपकरण है।
आगे की पढाई