आपकी टिप्पणियों से, आप वास्तव में एक खोल के बारे में भ्रमित होने लगते हैं । कर्नेल सिस्टम के प्रबंधन के लिए जिम्मेदार है। यह वह हिस्सा है जो वास्तव में प्रोग्राम लोड करता है और चलाता है, फाइलों तक पहुंचता है, मेमोरी आवंटित करता है, आदि। लेकिन कर्नेल का कोई उपयोगकर्ता इंटरफ़ेस नहीं है; आप केवल एक मध्यस्थ के रूप में दूसरे कार्यक्रम का उपयोग करके इसके साथ संवाद कर सकते हैं।
शेल एक प्रोग्राम है जो एक प्रॉम्प्ट को प्रिंट करता है, आप से इनपुट की एक पंक्ति को पढ़ता है, और फिर फ़ाइलों को हेरफेर करने या अन्य प्रोग्राम चलाने के लिए इसे एक या अधिक कमांड के रूप में व्याख्या करता है। जीयूआई के आविष्कार से पहले, शेल एक ओएस का प्राथमिक उपयोगकर्ता इंटरफ़ेस था। एमएस-डॉस पर, शेल को बुलाया गया था command.comऔर कुछ लोगों ने कभी एक अलग का उपयोग करने की कोशिश की। हालांकि, यूनिक्स पर लंबे समय से कई गोले हैं, जिन्हें उपयोगकर्ता चुन सकते हैं।
इन्हें 3 प्रकारों में विभाजित किया जा सकता है। बोर्न-संगत गोले मूल बॉर्न शेल से प्राप्त सिंटैक्स का उपयोग करते हैं । C शैल मूल C शेल से सिंटैक्स का उपयोग करते हैं । फिर ऐसे अनौपचारिक गोले हैं जो अपने स्वयं के सिंटैक्स का आविष्कार करते हैं, या किसी प्रोग्रामिंग भाषा से एक उधार लेते हैं, और आम तौर पर पहले दो प्रकारों की तुलना में बहुत कम लोकप्रिय होते हैं।
बिल्ट-इन कमांड केवल एक कमांड है जिसे शेल स्वयं लोड करता है, बजाय इसके कि वह किसी अन्य प्रोग्राम को लोड करने और चलाने के अनुरोध के रूप में व्याख्या करता है। इसके दो मुख्य प्रभाव हैं। सबसे पहले, यह आमतौर पर तेज़ होता है, क्योंकि किसी प्रोग्राम को लोड करने और चलाने में समय लगता है। बेशक, कमांड को चलाने में जितना अधिक समय लगता है, लोड रन समय की तुलना समग्र रन समय की तुलना में होती है (क्योंकि लोड समय काफी कम होता है)।
दूसरे, एक अंतर्निहित कमांड शेल की आंतरिक स्थिति को प्रभावित कर सकती है। इसीलिए जैसे कमांड का निर्माण किया cd जाना चाहिए, क्योंकि एक बाहरी प्रोग्राम शेल की वर्तमान निर्देशिका को बदल नहीं सकता है। अन्य आदेश, जैसे echo, दक्षता के लिए अंतर्निहित हो सकते हैं, लेकिन कोई आंतरिक कारण नहीं है कि वे बाहरी आदेश नहीं हो सकते हैं।
कौन-सी कमांड अंतर्निहित हैं, यह उस शेल पर निर्भर करता है जिसका आप उपयोग कर रहे हैं। आपको एक सूची के लिए इसके प्रलेखन से परामर्श करना होगा (जैसे, bashअंतर्निहित कमांड इसके मैनुअल के अध्याय 4 में सूचीबद्ध हैं )। typeयदि एक आदेश में निर्मित (यदि आपके खोल POSIX संगत है) आदेश आप बता सकते हैं, क्योंकि POSIX कि आवश्यकता है typeएक अंतर्निहित हो। यदि whichआपके शेल में बिल्ट-इन नहीं है, तो शायद यह आपके शेल के बिल्ट-इन के बारे में नहीं जानता होगा, लेकिन सिर्फ बाहरी कार्यक्रमों के लिए देखेगा।