'शेल' शब्द को अच्छी तरह से नामित किया गया है। यह शाब्दिक रूप से ओ / एस के आसपास एक शेल है जो उपयोगकर्ता को कंप्यूटर के साथ बातचीत करने की अनुमति देता है। जब यह मूल रूप से कल्पना की गई थी तो बहुत कम थे यदि कोई ग्राफिकल उपयोगकर्ता इंटरफ़ेस (कोई विंडोज़ नहीं :()। सब कुछ कमांड लाइन के लिए किया गया था। लेकिन यहां तक कि कमांड लाइन को रहने के लिए जगह की आवश्यकता थी। यह जीवित था, और अभी भी एक शेल में रहता है। ।
सरल शब्दों में, कमांड लाइन को उपयोगी बनाने के लिए इसमें ऐसे निर्देशों की आवश्यकता होती है जो इसे कॉल कर सकते हैं। इसलिए कमांड लाइन का उपयोग करने के लिए शेल के अंदर चलने के लिए प्रोग्राम बनाए गए थे। कार्यक्रमों को अपने स्वयं के पैकेज में कसकर समूहीकृत किया गया था, और एक साथ काम करने का इरादा था। उनमें "ls" और "grep", "ps", "sed" आदि जैसे कार्यक्रम शामिल हैं। उनमें ">" और "<" और पाइप ("|") जैसे फ़ाइल पुनर्निर्देशन कमांड भी शामिल हैं। इससे भी महत्वपूर्ण बात यह है कि वे सशर्त संचालन जैसे प्रोग्रामिंग कंस्ट्रक्शन भी शामिल हैं (यदि, तब, अन्यथा, छोरों के लिए, जबकि छोरों, स्थिति की जांच करने के तरीके जब आप एक बयान चलाते हैं (उदाहरण के लिए यदि आप "ls" चलाते हैं तो क्या यह कुछ भी मिला?), बात उसके जैसा)। ये अधिक जटिल कमांड लाइन (शेल) स्क्रिप्ट की नींव हैं,
जब कोई 'बैश शैल' शब्द का उपयोग करता है तो वे 'बाश' नामक एक कमांड लाइन दुभाषिया के बारे में बात करते हैं जो ओ / एस शेल में चलता है। आप इसे 'बैश शेल इंटरप्रेटर' के लिए छोटा मान सकते हैं। अन्य व्याख्याकार हैं जैसे बॉर्न (बैश एक 'नया और बेहतर बॉर्न शैल है और यह बॉर्न अगेन शेल के लिए छोटा है)। सी-शेल, के-शेल (जटिल शेल स्क्रिप्ट लिखने वाले कई लोगों द्वारा इष्ट), और अन्य जीएनयू संस्करण भी हैं। वर्षों से यह विशिष्ट कमांड लाइन दुभाषिया है जिसे आप शेल के रूप में उपयोग कर रहे हैं क्योंकि एक के बिना दूसरे का उपयोग नहीं किया जा सकता है। लेकिन वास्तविकता यह है कि वे अलग हैं।
क्यों वे ठीक से कमांड लाइन दुभाषियों के रूप में जाने जाते हैं और वास्तविक शेल के रूप में नहीं: यह इसलिए है क्योंकि वे शेल में रहते हैं और सभी आदेशों की व्याख्या करते हैं जैसे कि वे एक कार्यक्रम में चल रहे थे। और शेल को परवाह नहीं है कि आप इसमें कौन से दुभाषिया चलाते हैं, जब तक कि यह सही मानकों को पूरा नहीं करता है।
और क्यों उन्हें व्याख्याकार कहा जाता है, ऐसा इसलिए है क्योंकि वे वास्तव में व्याख्याकार हैं। यहां तक कि अगर आप स्पष्ट रूप से एक स्क्रिप्ट नहीं चला रहे हैं (और एक स्क्रिप्ट वास्तव में आपके द्वारा बनाई गई आदेशों की केवल एक पाठ फ़ाइल है ताकि आप एक ही कमांड को बार-बार टाइप किए बिना निष्पादित कर सकें)। उदाहरण के लिए, विनम्र 'ls' कमांड लें। जब आप इसे चलाते हैं, तो यह फ़ाइलों की एक सूची देता है। लेकिन यह कैसे चलता है यह आपके प्रश्न के लिए अधिक महत्वपूर्ण है: यह वास्तव में कमांड लाइन दुभाषिया के संदर्भ के अंदर चलता है, भले ही आप केवल एक सरल बंद आदेश प्रतीत होता हो। यही है, यह चलता है जैसे कि यह एक बड़े कार्यक्रम के हिस्से में एक बयान था। यह इस तरह से चलता है जैसे यह शेल स्क्रिप्ट स्क्रिप्ट फ़ाइल में वास्तव में शेल स्क्रिप्ट फ़ाइल में न हो। अनाम शेल स्क्रिप्ट फ़ाइल के रूप में यह थे।
कमांड लाइन पर आप जो कुछ भी चलाते हैं, उसमें यह सामान्य है (चाहे वह 'ls' जैसी एकल कमांड हो या कमांड और पुनरावृत्तियों और सशर्त विवरणों से भरी स्क्रिप्ट फ़ाइल): यह सभी कमांड लाइन दुभाषिया द्वारा संसाधित होती है; यह बैश, सी-शेल, के-शेल (AIX btw पर डिफ़ॉल्ट) हो।
यह देखने के लिए कि मेरा क्या मतलब है, एक निर्देशिका बनाएं 'परीक्षण':
mkdir test
इसे दर्ज करें और फ़ॉल्विंग कमांड चलाएं
grep hello *
आपको कुछ प्रकार की प्रतिक्रिया मिलेगी, जैसे 'कोई फ़ाइल या निर्देशिका नहीं'। अब कमांड दर्ज करें
echo $?
($? कहते हैं, मुझे बताएं कि आप क्रिप्टोकरंसी कंप्यूटर में क्या बोलते हैं।) आपको यह देखना चाहिए कि यह एक नंबर है (यह होना चाहिए) 2 '। यह grep से वापसी कोड है, जिसका अर्थ है 'ऐसी कोई फ़ाइल या निर्देशिका नहीं'। अब निम्नलिखित चलाएं:
echo hello > hello.txt
grep hello *
echo $?
आप देखेंगे कि फ़ाइल 'hello.txt' प्रारंभिक grep कमांड से लौटी है और अब 'इको $?' देखना चाहिए। संख्या '0' लौटाएं जिसका अर्थ वास्तव में कुछ पाया गया है।
यहां तक कि अगर ये प्रतीत होता है कि एक बंद आदेश चलाया जाता है, तो कमांड लाइन दुभाषिया कार्य करता है जैसे कि वे एक बड़े कार्यक्रम का हिस्सा हैं और उनके वापसी मूल्यों का ट्रैक रखता है। इसीलिए अगर आप grep कमांड के अंत में * भूल जाते हैं तो यह वापस नहीं आता है। यह पता है कि बयान अधूरा है और अधिक इनपुट की उम्मीद है। आखिरकार आप गर्भधारण करने के लिए कह सकते हैं कि यह कुछ लूप के परिणामों को टटोलने के लिए होगा जो कमांड लाइन पर लिखने और चलाने के लिए पूरी तरह से कानूनी है।
लब्बोलुआब यह है कि शेल शेल है, और दुभाषिया (जो भी आप उपयोग करते हैं उसका नाम, 'बैश', के-शेल, आदि) अलग हैं। लेकिन अक्सर वे एक दूसरे के साथ प्रयोग किए जाते हैं, क्योंकि किसी भी समय वे पूरी तरह से एक साथ बंधे होते हैं।