शेल (कंप्यूटिंग)

कम्प्यूटिंग में, एक शेल एक कंप्यूटर प्रोग्राम है जो एक मानव उपयोगकर्ता या अन्य प्रोग्रामों के लिए एक ऑपरेटिंग सिस्टम की सेवाओं को उजागर करता है। सामान्य तौर पर, कंप्यूटर की भूमिका और विशेष ऑपरेशन के आधार पर, ऑपरेटिंग सिस्टम शेल या तो कमांड लाइन इंटरफेस (CLI) या ग्राफिकल यूज़र इंटरफ़ेस (GUI) का उपयोग करते हैं। इसे शेल नाम दिया गया है क्योंकि यह ऑपरेटिंग सिस्टम के चारों ओर सबसे बाहरी परत है। कमांड-लाइन शेल के लिए उपयोगकर्ता को कमांड और उनके कॉलिंग सिंटेक्स (प्रोग्रामिंग लैंग्वेज) से परिचित होने की आवश्यकता होती है, और शेल-विशिष्ट स्क्रिप्टिंग लैंग्वेज (उदाहरण के लिए, बैश खोल) के बारे में अवधारणाओं को समझने के लिए, जबकि ग्राफिकल शेल शुरुआती कंप्यूटर पर कम बोझ डालते हैं। उपयोगकर्ता और उपयोग करने में आसान होने की विशेषता है, फिर भी अधिकांश जीयूआई-सक्षम ऑपरेटिंग सिस्टम सीएलआई शेल भी प्रदान करते हैं, सामान्य रूप से उन्नत कार्य करने के लिए।

सिंहावलोकन
ऑपरेटिंग सिस्टम अपने उपयोगकर्ताओं को फ़ाइल मैनेजर, प्रक्रिया (कंप्यूटिंग) प्रबंधन (आवेदन कार्यक्रम चलाना और समाप्त करना), प्रचय संसाधन और ऑपरेटिंग सिस्टम मॉनिटरिंग और कॉन्फ़िगरेशन सहित विभिन्न सेवाएं प्रदान करते हैं।

अधिकांश ऑपरेटिंग सिस्टम शेल अंतर्निहित कर्नेल के लिए सीधे इंटरफेस नहीं होते हैं, भले ही शेल सीधे कंप्यूटर से जुड़े परिधीय उपकरणों के माध्यम से उपयोगकर्ता के साथ संचार करता हो। शेल वास्तव में विशेष अनुप्रयोग हैं जो कर्नेल अप्लिकेशन प्रोग्रामिंग अंतरफलक का ठीक उसी तरह उपयोग करते हैं जैसे कि अन्य अनुप्रयोग प्रोग्राम द्वारा उपयोग किया जाता है। शेल उपयोगकर्ता को इनपुट के लिए संकेत देकर, उनके इनपुट की व्याख्या करके, और फिर अंतर्निहित ऑपरेटिंग सिस्टम से आउटपुट को हैंडल करके उपयोगकर्ता-सिस्टम इंटरैक्शन का प्रबंधन करता है। चूंकि ऑपरेटिंग सिस्टम शेल वास्तव में एक एप्लिकेशन है, इसलिए अधिकांश ऑपरेटिंग सिस्टम के लिए इसे आसानी से दूसरे समान एप्लिकेशन से बदला जा सकता है।

स्थानीय सिस्टम पर चलने वाले शेल्स के अलावा, रिमोट सिस्टम को स्थानीय उपयोगकर्ताओं के लिए उपलब्ध कराने के विभिन्न तरीके हैं; ऐसे तरीकों को आमतौर पर रिमोट एक्सेस या रिमोट एडमिनिस्ट्रेशन के रूप में जाना जाता है। प्रारंभिक रूप से बहु-उपयोगकर्ता मेनफ़्रेम कंप्यूटर पर उपलब्ध है, जो प्रत्येक सक्रिय उपयोगकर्ता के लिए पाठ-आधारित यूआई एक साथ सीरियल लाइन या मोडम के माध्यम से मेनफ्रेम से जुड़े एक पाठ टर्मिनल के माध्यम से प्रदान करता है, रिमोट एक्सेस यूनिक्स-जैसी प्रणालियों और माइक्रोसॉफ्ट विंडोज तक बढ़ा दिया गया है। यूनिक्स जैसी प्रणालियों पर, सिक्योर शेल प्रोटोकॉल का उपयोग आमतौर पर टेक्स्ट-आधारित शेल के लिए किया जाता है, जबकि एसएसएच टनलिंग का उपयोग एक्स विंडो सिस्टम-आधारित ग्राफिकल यूजर इंटरफेस (जीयूआई) के लिए किया जा सकता है। Microsoft Windows पर, दूरस्थ डेस्कटॉप प्रोटोकॉल का उपयोग GUI दूरस्थ पहुँच प्रदान करने के लिए किया जा सकता है, और Windows Vista के बाद से, WMI, RPC और WS-प्रबंधन के माध्यम से पाठ-आधारित दूरस्थ पहुँच के लिए PowerShell का उपयोग किया जा सकता है। अधिकांश ऑपरेटिंग सिस्टम शेल दो श्रेणियों में से एक में आते हैं – कमांड-लाइन और ग्राफिकल। कमांड-लाइन शेल ऑपरेटिंग सिस्टम को कमांड-लाइन इंटरफ़ेस (CLI) प्रदान करते हैं, जबकि ग्राफ़िकल शेल एक ग्राफ़िकल यूज़र इंटरफ़ेस (GUI) प्रदान करते हैं। अन्य संभावनाएं, हालांकि इतनी सामान्य नहीं हैं, इसमें वॉयस यूजर इंटरफेस और टेक्स्ट-आधारित यूजर इंटरफेस (टीयूआई) के विभिन्न कार्यान्वयन शामिल हैं जो सीएलआई नहीं हैं, जैसे टेक्स्ट-आधारित मेनू सिस्टम। सीएलआई- और जीयूआई-आधारित गोले के सापेक्ष गुणों पर अक्सर बहस होती है। कई कंप्यूटर उपयोगकर्ता प्रदर्शन किए जाने वाले कार्य के आधार पर दोनों का उपयोग करते हैं।

इतिहास
शुरुआती इंटरएक्टिव सिस्टम ने निवासी मॉनिटर के हिस्से के रूप में एक सरल कमांड-लाइन दुभाषिया प्रदान किया। इस दुभाषिया को अलग-अलग नामों से पुकारा जा सकता है, जैसे  DEC TOPS-10 सिस्टम पर। दुभाषिया कई पूर्वनिर्धारित आदेशों में से एक को निष्पादित करेगा, जिनमें से एक उपयोगकर्ता प्रोग्राम चलाना होगा। सामान्य आदेश उपयोगकर्ता को सिस्टम पर और सिस्टम से बाहर लॉग करेगा, उपकरणों और फ़ाइलों को आवंटित, मुक्त और हेरफेर करेगा, और सिस्टम या उपयोगकर्ता प्रक्रिया के बारे में जानकारी के विभिन्न टुकड़ों को क्वेरी करेगा। 1964 में, मॉलटिक्स ऑपरेटिंग सिस्टम के लिए, लुई पॉज़िन ने किसी प्रोग्रामिंग भाषा की तरह कमांड का उपयोग करने के विचार की कल्पना की, और इसका वर्णन करने के लिए शेल शब्द गढ़ा। 1965 के दस्तावेज़ में, शेल को एक सामान्य प्रक्रिया के रूप में परिभाषित किया गया है जिसे पर्यवेक्षक द्वारा स्वचालित रूप से कहा जाता है जब भी कोई उपयोगकर्ता अपने कंसोल पर कुछ संदेश टाइप करता है, ऐसे समय में जब उसके पास कंसोल नियंत्रण के तहत सक्रिय निष्पादन में कोई अन्य प्रक्रिया नहीं होती है। यह प्रक्रिया कंसोल संदेशों और उपनेमका [पर्यवेक्षक में] के बीच एक इंटरफेस के रूप में कार्य करती है। मल्टिक्स ने सक्रिय कार्य, बाद के सभी गोले में एक महत्वपूर्ण अवधारणा भी पेश की। इसे इस रूप में परिभाषित किया गया है "a string&hellip; which is replaced by a character string return value before the command line containing it is executed. Active functions are often used&hellip; to implement command-language macros."

1971 में, केन थॉम्पसन ने यूनिक्स के पहले संस्करण में थॉम्पसन खोल विकसित किया। मल्टिक्स शेल की तुलना में सरल होते हुए, इसमें कुछ नवीन विशेषताएं शामिल थीं, जिन्हें आधुनिक शेल्स में आगे बढ़ाया गया है, जिसमें इनपुट और आउटपुट पुनर्निर्देशन (कंप्यूटिंग) के लिए < और > का उपयोग शामिल है।

ग्राफिकल शेल पहली बार डगलस एंजेलबार्ट के एनएलएस (कंप्यूटर सिस्टम) सिस्टम में दिखाई दिया, जिसे दिसंबर, 1968 में सैन फ्रांसिस्को में पतन संयुक्त कंप्यूटर सम्मेलन में प्रदर्शित किया गया था, जिसे द मदर ऑफ ऑल डेमो कहा गया है। स्टैनफोर्ड अनुसंधान संस्थान में एंगेलबार्ट के सहयोगियों ने अवधारणा को ज़ेरॉक्स पालो अल्टो रिसर्च सेंटर (PARC) में लाया, जहाँ यह 1973 में पेश किए गए ज़ेरॉक्स ऑल्टो पर दिखाई दिया। वहाँ से यह विचार 1980 में निकोलस विर्थ के लिलिथ (कंप्यूटर) और Apple में फैल गया। Inc. 1983 में Apple लिसा, फिर सर्वव्यापी हो गई।

कमांड-लाइन शेल
एक कमांड-लाइन इंटरफ़ेस (CLI) एक ऑपरेटिंग सिस्टम शेल है जो ऑपरेटिंग सिस्टम को निर्देश और डेटा प्रदान करने के लिए कीबोर्ड पर टाइप किए गए अक्षरांकीय वर्णों का उपयोग करता है, अंतःक्रियात्मक रूप से। उदाहरण के लिए, एक टेलीटाइपराइटर कंप्यूटर पर चल रहे कमांड दुभाषिया प्रोग्राम को कीस्ट्रोक्स का प्रतिनिधित्व करने वाले कोड भेज सकता है; कमांड दुभाषिया कीस्ट्रोक्स के अनुक्रम को पार्स करता है और एक त्रुटि संदेश के साथ प्रतिक्रिया करता है यदि यह वर्णों के अनुक्रम को नहीं पहचान सकता है, या यह कुछ अन्य प्रोग्राम क्रियाएं कर सकता है जैसे एप्लिकेशन प्रोग्राम लोड करना, फाइलों को सूचीबद्ध करना, उपयोगकर्ता में लॉगिंग करना और कई अन्य। ऑपरेटिंग सिस्टम जैसे UNIX में विभिन्न कमांड, सिंटैक्स और क्षमताओं के साथ यूनिक्स शेल प्रोग्राम की एक विशाल विविधता है, जिसमें POSIX शेल एक आधार रेखा है। कुछ ऑपरेटिंग सिस्टम में कमांड इंटरफ़ेस की केवल एक ही शैली थी; कमोडिटी ऑपरेटिंग सिस्टम जैसे MS-DOS एक मानक कमांड इंटरफ़ेस (COMMAND.COM) के साथ आया था, लेकिन तृतीय-पक्ष इंटरफ़ेस भी अक्सर उपलब्ध थे, अतिरिक्त सुविधाएँ या कार्य प्रदान करते थे जैसे कि मेनूिंग या रिमोट प्रोग्राम निष्पादन।

एप्लिकेशन प्रोग्राम कमांड-लाइन इंटरफ़ेस भी लागू कर सकते हैं। उदाहरण के लिए, यूनिक्स जैसी प्रणालियों में, टेलनेट प्रोग्राम में रिमोट कंप्यूटर सिस्टम के लिंक को नियंत्रित करने के लिए कई आदेश होते हैं। चूंकि प्रोग्राम के लिए आदेश एक ही कीस्ट्रोक्स से बने होते हैं, जैसे कि एक दूरस्थ कंप्यूटर पर डेटा भेजा जा रहा है, दोनों को अलग करने के कुछ साधनों की आवश्यकता होती है। एक बचने का क्रम को परिभाषित किया जा सकता है, या तो एक विशेष स्थानीय कीस्ट्रोक का उपयोग करके जो कभी भी पास नहीं होता है लेकिन हमेशा स्थानीय सिस्टम द्वारा व्याख्या की जाती है। प्रोग्राम मोडल बन जाता है, कीबोर्ड से कमांड की व्याख्या करने या संसाधित होने वाले डेटा के रूप में कीस्ट्रोक्स पास करने के बीच स्विच करना।

कई कमांड-लाइन शेल की एक विशेषता पुन: उपयोग के लिए कमांड के अनुक्रम को बचाने की क्षमता है। एक डेटा फ़ाइल में आदेशों के अनुक्रम हो सकते हैं जिन्हें सीएलआई द्वारा अनुसरण करने के लिए बनाया जा सकता है जैसे कि उपयोगकर्ता द्वारा टाइप किया गया हो। सीएलआई में विशेष विशेषताएं तब लागू हो सकती हैं जब वह इन संग्रहीत निर्देशों का पालन कर रहा हो। ऐसी बैच फ़ाइलें (स्क्रिप्ट फ़ाइलें) नियमित संचालन को स्वचालित करने के लिए बार-बार उपयोग की जा सकती हैं जैसे सिस्टम को पुनरारंभ होने पर प्रोग्राम के सेट को प्रारंभ करना। शेल के बैच मोड उपयोग में आमतौर पर संरचनाएं, सशर्त, चर और प्रोग्रामिंग भाषाओं के अन्य तत्व शामिल होते हैं; कुछ के पास इस तरह के उद्देश्य के लिए जरूरी आवश्यक चीजें हैं, अन्य अपने आप में बहुत ही परिष्कृत प्रोग्रामिंग भाषाएं हैं। इसके विपरीत, कुछ प्रोग्रामिंग भाषाओं को एक ऑपरेटिंग सिस्टम शेल या एक उद्देश्य-निर्मित प्रोग्राम में अंतःक्रियात्मक रूप से उपयोग किया जा सकता है।

कमांड-लाइन शेल कमांड-लाइन पूर्णता जैसी सुविधाओं की पेशकश कर सकता है, जहां दुभाषिया उपयोगकर्ता द्वारा इनपुट किए गए कुछ वर्णों के आधार पर कमांड का विस्तार करता है। एक कमांड-लाइन दुभाषिया एक इतिहास समारोह की पेशकश कर सकता है, ताकि उपयोगकर्ता सिस्टम को जारी किए गए पहले के आदेशों को याद कर सकें और संभवतः कुछ संपादन के साथ उन्हें दोहरा सकें। चूंकि ऑपरेटिंग सिस्टम के सभी कमांड को उपयोगकर्ता द्वारा टाइप किया जाना था, शॉर्ट कमांड नाम और प्रोग्राम विकल्पों का प्रतिनिधित्व करने के लिए कॉम्पैक्ट सिस्टम आम थे। संक्षिप्त नाम कभी-कभी उपयोगकर्ता के लिए याद रखना मुश्किल होता था, और शुरुआती सिस्टम में विस्तृत ऑन-लाइन उपयोगकर्ता निर्देश मार्गदर्शिका प्रदान करने के लिए भंडारण संसाधनों की कमी थी।

चित्रमय गोले
एक ग्राफिकल यूजर इंटरफेस (जीयूआई) विंडो (कम्प्यूटिंग) को खोलने, बंद करने, स्थानांतरित करने और आकार बदलने के साथ-साथ विंडोज़ के बीच फोकस (कंप्यूटिंग) स्विच करने जैसे संचालन की अनुमति देकर ग्राफिकल रूप से कार्यक्रमों में हेरफेर करने का साधन प्रदान करता है। ग्राफिकल शेल को डेस्कटॉप वातावरण के साथ शामिल किया जा सकता है या अलग से जोड़ा जा सकता है, यहां तक ​​कि शिथिल युग्मित उपयोगिताओं के एक सेट के रूप में भी।

अधिकांश ग्राफिकल यूजर इंटरफेस एक इलेक्ट्रॉनिक डेस्कटॉप के डेस्कटॉप रूपक | रूपक विकसित करते हैं, जहां डेटा फ़ाइलों का प्रतिनिधित्व किया जाता है जैसे कि वे एक डेस्क पर कागजी दस्तावेज थे, और इसी तरह एप्लिकेशन प्रोग्राम में कमांड नामों द्वारा बुलाए जाने के बजाय ग्राफिकल प्रतिनिधित्व होते हैं।

यूनिक्स जैसी प्रणाली
ग्राफिकल शेल आमतौर पर एक विंडोिंग सिस्टम के शीर्ष पर बनते हैं। एक्स विंडो सिस्टम या वेलैंड (प्रदर्शन सर्वर प्रोटोकॉल) के मामले में, शेल में क्रमशः एक एक्स विंडो मैनेजर या एक वायलैंड कंपोज़िटर होता है, साथ ही एक या कई प्रोग्राम होते हैं जो ओपन विंडो को प्रबंधित करने के लिए इंस्टॉल किए गए एप्लिकेशन को शुरू करने की कार्यक्षमता प्रदान करते हैं। और वर्चुअल डेस्कटॉप, और अक्सर एक विजेट इंजन का समर्थन करने के लिए।

MacOS के मामले में, क्वार्ट्ज कंपोजिटर विंडोिंग सिस्टम के रूप में कार्य करता है, और शेल में खोजक (सॉफ्टवेयर) होता है, डॉक (macOS), सिस्टम यूआई सर्वर, और मिशन नियंत्रण (macOS)।

माइक्रोसॉफ्ट विंडोज
Microsoft Windows ऑपरेटिंग सिस्टम के आधुनिक संस्करण Windows शेल को उनके शेल के रूप में उपयोग करते हैं। विंडोज खोल ऑपरेटिंग सिस्टम के फ़ाइल प्रबंधन कार्यों तक पहुँचने के लिए डेस्कटॉप वातावरण, शुरुआत की सूची और टास्क बार, साथ ही एक ग्राफिकल यूजर इंटरफेस प्रदान करता है। पुराने संस्करणों में कार्यक्रम प्रबंधक भी शामिल है, जो माइक्रोसॉफ़्ट विंडोज़ की 3.x सीरीज के लिए शेल था, और जो वास्तव में कम से कम विंडोज एक्सपी के माध्यम से 95 और एनटी दोनों प्रकार के विंडोज के बाद के संस्करणों के साथ भेज दिया गया था। विंडोज संस्करण 1 और 2 के इंटरफेस स्पष्ट रूप से भिन्न थे।

डेस्कटॉप एप्लिकेशन को भी शेल माना जाता है, जब तक कि वे किसी तृतीय-पक्ष इंजन का उपयोग करते हैं। इसी तरह, विंडोज़ एक्सप्लोरर के इंटरफेस से असंतुष्ट कई व्यक्तियों और डेवलपर्स ने सॉफ्टवेयर विकसित किया है जो या तो खोल के कामकाज और उपस्थिति को बदल देता है या इसे पूरी तरह से बदल देता है। StarDock द्वारा WindowBlinds पूर्व प्रकार के एप्लिकेशन का एक अच्छा उदाहरण है। लाइटस्टेप और इमर्ज डेस्कटॉप बाद वाले के अच्छे उदाहरण हैं।

इंटरऑपरेबिलिटी प्रोग्राम और उद्देश्य-डिज़ाइन सॉफ़्टवेयर विंडोज़ उपयोगकर्ताओं को नीचे चर्चा की गई विभिन्न यूनिक्स-आधारित जीयूआई के साथ-साथ मैकिंटोश के समकक्षों का उपयोग करने देता है। वर्जन 3.0 के लिए OS/2 प्रेजेंटेशन मैनेजर के समकक्ष कुछ शर्तों के तहत विंडोज NT के OS/2 आर्किटेक्चर का उपयोग करके विंडोज NT के वर्जन में कुछ OS/2 प्रोग्राम चला सकते हैं।

अन्य उपयोग
शेल का उपयोग एप्लिकेशन सॉफ़्टवेयर का वर्णन करने के लिए भी किया जाता है जो प्रकृति में पाए जाने वाले गोले के अनुरूप वेब ब्राउज़र और ईमेल क्लाइंट जैसे किसी विशेष घटक के आसपास बनाया गया है। दरअसल, (कमांड-लाइन) शेल ऑपरेटिंग सिस्टम कर्नेल को एनकैप्सुलेट करता है। इन्हें कभी-कभी रैपर भी कहा जाता है।

विशेषज्ञ प्रणालियों में, एक खोल सॉफ्टवेयर का एक टुकड़ा है जो किसी विशेष अनुप्रयोग के ज्ञान आधार के बिना एक खाली विशेषज्ञ प्रणाली है।

यह भी देखें

 * कमांड शेल की तुलना
 * ह्यूमन कंप्यूटर इंटरेक्शन
 * इंटरनेट एक्सप्लोरर खोल
 * शैल खाता
 * शेल निर्मित
 * सुपर उपयोगकर्ता
 * यूनिक्स शेल
 * विंडो मैनेजर – एक अल्पविकसित प्रक्रिया प्रबंधन इंटरफ़ेस प्रदान करता है
 * रीड-इवल-प्रिंट लूप को लैंग्वेज शेल भी कहा जाता है, जो व्याख्या की गई प्रोग्रामिंग भाषा के लिए एक कमांड लाइन इंटरफेस है