निर्मितियों के दो वर्ग हैं:
कुछ कमांड को शेल प्रोग्राम में ही बनाया जाना चाहिए क्योंकि वे बाहरी होने पर काम नहीं कर सकते हैं।
cd
एक ऐसा है जब से यह बाहरी थे, यह केवल अपनी खुद की निर्देशिका बदल सकता है; यह शेल की वर्तमान कार्यशील निर्देशिका को प्रभावित नहीं कर सकता है। (यह भी देखें: एक कार्यक्रम क्यों cd
नहीं है? )
कमांड के अन्य वर्ग को दक्षता के लिए शुद्ध रूप से शेल में बनाया गया है।
आदमी पेज जो उल्लेख builtins पर एक अनुभाग है , और इस वर्ग में के रूप में आदेशों का उदाहरण।dash
printf
echo
test
यूनिक्स सिस्टम ने हमेशा उस दूसरी श्रेणी के कमांड के लिए अलग-अलग निष्पादनयोग्य शामिल किए हैं। ये अलग-अलग निष्पादनयोग्य अभी भी मेरे द्वारा उपयोग किए जाने वाले हर यूनिक्स सिस्टम पर उपलब्ध हैं, भले ही वे आपके द्वारा उपयोग किए जाने वाले प्रत्येक शेल में निर्मित हों। ( POSIX को वास्तव में आवश्यकता है कि ये निष्पादक मौजूद हों।)
मेरा मानना है कि echo
एटी एंड टी यूनिक्स सिस्टम वी रिलीज़ 3.1 में शेल में बनाया गया है। मैं एटी एंड टी 3 बी 1 श्रृंखला यूनिक्स सिस्टम के लिए मैनुअल के दो अलग-अलग संस्करणों की तुलना पर आधारित हूं । किसी ने इन पुस्तिकाओं के 1986 संस्करणों को स्कैन करके उन्हें ऑनलाइन डाल दिया है ; ये SVR3 की मूल रिलीज़ के अनुरूप हैं। आप देख सकते हैं कि UNIX सिस्टम V के उपयोगकर्ता नियमावली, खंड II केecho
पृष्ठ 523 पर सूची में नहीं है , जहां आप यह उम्मीद करेंगे कि यदि कमांड शेल में बनाया गया था। 1987 से SVR3.1 मैनुअल के अपने स्थानीय समाचार पत्र की नकल में, है मैनुअल के इस खंड में सूचीबद्ध।echo
मुझे पूरा यकीन है कि यह बर्कले CSRG नवाचार नहीं है जो AT & T घर वापस लाए। 4.3BSD उसी वर्ष SVR3, 1986 के रूप में सामने आया, लेकिन यदि आप 4.3BSD के sh.1 मैनपेज को देखते हैं, तो आप देखते हैं कि echo
"स्पेशल कमांड" खंड में अंतर्निहित कमांड की सूची नहीं है। यदि CSRG ने ऐसा किया, तो हमें यह साबित करने के लिए एक प्रलेखित स्रोत चाहिए।
इस बिंदु पर, आपको आश्चर्य हो सकता है कि अगर echo
SVR3.1 की तुलना में पहले शेल में बनाया गया था और इस तथ्य को तब तक दस्तावेज नहीं किया गया था । मेरे लिए उपलब्ध नवीनतम प्री-एसवीआर 3 एटी एंड टी यूनिक्स स्रोत कोड पीडीपी -11 सिस्टम III टारबॉल में है , जिसमें आपको बॉर्न शेल स्रोत कोड मिलेगा। आपको echo
अंतर्निहित कमांड तालिका नहीं मिलेगी , जो कि अंदर है /usr/src/cmd/sh/msg.c
। उस फ़ाइल में टाइमस्टैम्प के आधार पर, जो साबित करता है कि echo
निश्चित रूप से 1980 में शेल में नहीं था।
सामान्य ज्ञान
उसी निर्देशिका में एक फ़ाइल भी होती है, builtin.c
जिसमें इस प्रश्न के लिए कुछ भी नहीं होता है, लेकिन हमें यह दिलचस्प टिप्पणी मिलती है:
/*
builtin commands are those that Bourne did not intend
to be part of his shell.
Redirection of i/o, or rather the lack of it, is still a
problem..
*/