"शैल" और "बैश" शब्दों में क्या अंतर है?


11

"शेल" और "बैश" में क्या अंतर है और इन शब्दों का क्या अर्थ है?

जहां तक ​​मुझे पता है, कोई अंतर नहीं है। लेकिन मैंने "शेल" के बारे में और "बैश" के बारे में कई किताबें देखी हैं!

इसलिए यदि मैं मैक ओएस एक्स पर टर्मिनल के साथ काम करना चाहता हूं और कुछ बैश स्क्रिप्ट लिखना चाहता हूं, तो मैं सोच रहा हूं कि मुझे किस तरह की पुस्तकों के लिए जाना चाहिए।


7
यह एक वर्ग बनाम उदाहरण भेद है।
काज़

1
दिलचस्प पठन सामग्री: unix.stackexchange.com/questions/4126/…
बर्नहार्ड

1
पहला खोल बॉर्न नामक एक व्यक्ति द्वारा लिखा गया था। BASH 'Boune Again Shell' के लिए एक संक्षिप्त नाम है। मज़े करना ज़रूरी है!
किंजल दीक्षित

जवाबों:


31

एक " शेल " एक सॉफ्टवेयर है जो एक ऑपरेटिंग सिस्टम को एक इंटरफ़ेस प्रदान करता है। उदाहरण के लिए, explorer.exe विंडोज में डिफ़ॉल्ट शेल है (हालांकि विकल्प मौजूद हैं ), और ओएस एक्स फाइंडर पर समान कार्यक्षमता प्रदान करता है। लिनक्स / * निक्स पर, शेल डेस्कटॉप वातावरण (जैसे ग्नोम या केडीई ) का हिस्सा हो सकता है , या इसके शीर्ष पर एक अलग सॉफ्टवेयर घटक हो सकता है (जैसे एकता या दालचीनी )।

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

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

विंडोज पर कमांड-लाइन के गोले के उदाहरणों में cmd.exe (उर्फ कमांड प्रॉम्प्ट) और पॉवरशेल शामिल हैं


3
खोजक को आमतौर पर ओएस एक्स पर एक शेल नहीं कहा जाता है। अधिकांश जीयूआई और विंडो प्रबंधन विशेषताओं को अन्य प्रक्रियाओं द्वारा नियंत्रित किया जाता है।
लैरी

1
@LauriRanta विकिपीडिया असहमत लगता है । भले ही उसे अन्य प्रक्रियाओं से मदद मिले या नहीं, उसका काम उपयोगकर्ता को GUI के माध्यम से अंतर्निहित OS के साथ बातचीत करने में सक्षम बनाना है, और इस तरह यह एक ग्राफिकल शेल के विवरण को फिट करता है।
Indrek

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

6
@LauriRanta: क्विक क्विज़, Nautilus का आइकन क्या है?
रेयान

2
@LauriRanta डॉक शेल के लिए बेहतर उम्मीदवार नहीं होगा? प्रोग्राम लॉन्च करना और डॉक्यूमेंट खोलना, एक्सपोज़ / स्पेसेस / मिशन कंट्रोल, AFAIK लॉन्चपैड और टास्क स्विचर के साथ-साथ सभी नकली फीचर्स हैं।
डैनियल बेक

13

बैश कई गोले में से एक है।

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

बेल लैब्स में स्टीफन बॉर्न द्वारा लिखित मूल यूनिक्स खोल बॉर्न शेल , श था । इसके बाद सी शेल आया , जिसे बर्कले में बिल जॉय द्वारा लिखा गया था, क्योंकि इसे tcsh के रूप में अपडेट किया गया था । अन्य गोले शामिल कॉर्न खोल , ksh, डेविड कॉर्न ने लिखा है, यह भी बेल लेबोरेटरीज में, और बैश , "बॉर्न फिर से खोल", श के लिए एक नि: शुल्क स्थानापन्न के रूप में GNU परियोजना के लिए ब्रायन फॉक्स ने लिखा है।

आज, बैश शायद सबसे लोकप्रिय यूनिक्स शेल है लेकिन बहुत सारे लोग (मुझे शामिल किया गया) अभी भी अपने अच्छे सिंटैक्स के आधार पर सी शेल को पसंद करते हैं (हम में से कुछ को कैसा लगता है)। असल में, यह स्वाद की बात है, इसलिए मैं आपको शुरू करने में मदद करने के लिए मेरे द्वारा लिंक किए गए विकिपीडिया लेखों को पढ़ने की सलाह देता हूं।


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

1
@LieRyan वे शेल नहीं हैं, वे फाइल मैनेजर हैं। गोले एकीकृत कमांड / स्क्रिप्ट दुभाषियों को उनके भीतर चलाने की अनुमति देते हैं। मेरा जवाब देखिए। बस एक फ़ाइल प्रबंधक से एक कार्यक्रम चलाने में सक्षम होने के नाते यह एक खोल नहीं है।
बिल रोसमस

@BillR: आपको अपनी परिभाषा के गनोम शेल लोगों को सूचित करना चाहिए।
२१

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

6

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

सरल शब्दों में, कमांड लाइन को उपयोगी बनाने के लिए इसमें ऐसे निर्देशों की आवश्यकता होती है जो इसे कॉल कर सकते हैं। इसलिए कमांड लाइन का उपयोग करने के लिए शेल के अंदर चलने के लिए प्रोग्राम बनाए गए थे। कार्यक्रमों को अपने स्वयं के पैकेज में कसकर समूहीकृत किया गया था, और एक साथ काम करने का इरादा था। उनमें "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 कमांड के अंत में * भूल जाते हैं तो यह वापस नहीं आता है। यह पता है कि बयान अधूरा है और अधिक इनपुट की उम्मीद है। आखिरकार आप गर्भधारण करने के लिए कह सकते हैं कि यह कुछ लूप के परिणामों को टटोलने के लिए होगा जो कमांड लाइन पर लिखने और चलाने के लिए पूरी तरह से कानूनी है।

लब्बोलुआब यह है कि शेल शेल है, और दुभाषिया (जो भी आप उपयोग करते हैं उसका नाम, 'बैश', के-शेल, आदि) अलग हैं। लेकिन अक्सर वे एक दूसरे के साथ प्रयोग किए जाते हैं, क्योंकि किसी भी समय वे पूरी तरह से एक साथ बंधे होते हैं।


2

शेल एक पाठ आधारित उपयोगकर्ता इंटरफ़ेस है।

बैश एक प्रकार का खोल है।


2
"परीक्षण आधारित उपयोगकर्ता इंटरफ़ेस" क्या है? इसके अलावा, अपने उत्तर को थोड़ा विस्तारित करना अच्छा होगा .. जैसा कि आप अन्य उत्तरों से देख सकते हैं, यह हमेशा अधिक संदर्भ देने में मदद करता है।
slhck

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

अगर आपको लगता है कि एक प्रश्न अब प्रयास को दिखाता है तो इसका मतलब यह नहीं है कि आपको इसके उत्तर में प्रयास नहीं करना चाहिए। आपका जवाब, दूसरों की तुलना में, थोड़ा विस्तार का अभाव है। निश्चित रूप से यह आप पर निर्भर है कि आप इसे जोड़ सकते हैं।
12 slhck

मैं व्यक्तिगत जिम्मेदारी में सुधार और सबक की सराहना करता हूं। उन लोगों की रक्षा करने के लिए धन्यवाद जो प्रयास करने वालों में से करने के लिए तैयार नहीं हैं। मैं पूरी तरह से लाइन से यह भूल गया हूं कि मैंने पोस्टर को कितना भुनाया है।
हायेकप्लोसिव्स

1

bashshellपरिवार में से एक है, लेकिन अन्य गोले के बहुत सारे है।

उदाहरण के लिए, मिनिक्स 3 पर , ashशेल है, यह जैसे सहयोगी सरणियों का समर्थन नहीं करता है bash4

POSIX मानक विभिन्न गोले और OSes के बीच एक पोर्टेबल एपीआई बनाने के लिए एक प्रयास है।

Http://en.wikipedia.org/wiki/Unix_shell#Bourne_shell_compatible देखें


1

bash मौजूद कई शेल में से एक है।

सभी गोले में अपनी समानताएं और अंतर हैं। उदाहरण के लिए बैश में लिखी गई एक स्क्रिप्ट, पूरी तरह से या काफी हद तक दूसरे शेल के साथ संगत हो सकती है (उदाहरण के लिए zsh )।

इस तथ्य के कारण कि bashयह बहुत व्यापक है, अक्सर यह निहित होता है कि एक स्क्रिप्ट इसके अनुरूप है।

यदि आप एक पुस्तक खरीदना चाहते हैं, तो विशेष रूप से आपके द्वारा उपयोग किए जाने वाले शेल के लिए लिखित एक खरीदें। हालांकि पैसा खर्च करने से पहले उनके मतभेदों को पढ़ना एक अच्छा विचार होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.