सिस्टम की तरह यूनिक्स में कई गोले क्यों हैं?


16

मैंने यूनिक्स के मूल सिद्धांतों को सीखना शुरू कर दिया है और सोच रहा है कि सिस्टम जैसे यूनिक्स में इतने सारे गोले क्यों हैं। यूनिक्स पर्यावरण में पुस्तक उन्नत प्रोग्रामिंग से :

शेल एक कमांड-लाइन दुभाषिया है जो उपयोगकर्ता इनपुट को पढ़ता है और कमांड निष्पादित करता है। शेल का उपयोगकर्ता इनपुट सामान्य रूप से टर्मिनल (एक इंटरैक्टिव शेल) या कभी-कभी (le (शेल स्क्रिप्ट कहा जाता है) से होता है।

और फिर पुस्तक बॉर्न शेल, बॉर्न-फिर शेल, सेशेल, आदि जैसे कई शेल कार्यक्रमों को सूचीबद्ध करने के लिए आगे बढ़ती है। मेरा प्रश्न मूल रूप से हमें कई गोले की आवश्यकता क्यों है?


4
यही कारण है कि विभिन्न अन्य प्रौद्योगिकियों के लिए बहुत सारे मानक लागू होते हैं। xkcd.com/927
दान अग्नि प्रकाश द्वारा

1
इसी कारण से आपके पास कई प्रोग्रामिंग भाषाओं (एक भाषा के लिए कई कंपाइलर) या कई इंटरनेट ब्राउज़रों के लिए कंपाइलर / दुभाषिए हो सकते हैं।
मिशा अरेफ़िएव नोव

6
आपका प्रश्न विचारणीय है। " क्यों हम कई गोले की जरूरत है? " तुम कौन से कहा कि हम जरूरत से अधिक गोले? आपकी पुस्तक ने कहा कि हमारे पास कई गोले हैं। वह वैसी बात नहीं है।
राब

जवाबों:


15

आधुनिक UNIX वातावरण में उपयोग किए जाने वाले अधिकांश गोले POSIX श विनिर्देश के अनुरूप हैं। POSIX श को मूल कोर्न शेल (ksh88) से लिया गया है, जो कि पहले बॉर्न शेल से व्युत्पन्न है, लेकिन POSIX sh केवल ksh88 की कार्यक्षमता का एक छोटा उपसमूह भी निर्दिष्ट करता है। एक शेल जो केवल न्यूनतम आवश्यकता को लागू करता है वह सभी लिखने के लिए आवश्यक कई विशेषताओं को याद कर रहा है लेकिन एक सुरक्षित और उचित तरीके से स्क्रिप्ट का सबसे तुच्छ। उदाहरण के लिए, स्थानीय चर और सरणियाँ गैर-मानक एक्स्ट्रा कलाकार हैं।

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

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

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

इसलिए संक्षेप में। डिफ़ॉल्ट रूप से अक्सर कई गोले होते हैं:

  • अतिरिक्त सुविधाओं के लिए, विशेष रूप से गैर-पोर्टेबल अतिरिक्त से निपटने के लिए।
  • विरासत की लिपियों को संभालने के लिए जिन्हें अक्सर अनसुना कर दिया जाता है।
  • आकार / प्रदर्शन। एंबेडेड सिस्टम में अक्सर छोटे गोले जैसे mksh या busybox sh की आवश्यकता होती है।
  • लाइसेंसिंग कारण। AT & T ksh 2000 या उसके आसपास तक का मालिकाना सॉफ्टवेयर था। यह काफी हद तक Zsh और बैश जैसे सभी ksh- जैसे क्लोन को जन्म देता है।
  • अन्य ऐतिहासिक कारण। हालांकि आज बहुत लोकप्रिय नहीं है, फिर भी भाषा को नए सिरे से तैयार करने की कोशिश की गई है, जैसे कि scsh और es। कई गोले की प्रक्रिया प्रतिस्थापन सुविधा मूल रूप से आरसी (थोड़ा अलग सिंटैक्स के साथ), और सीएचएस से ब्रेस विस्तार से आती है। अलग-अलग गोले में ऐसी विशेषताओं के अलग-अलग संयोजन उपलब्ध हैं, आमतौर पर कुछ सूक्ष्म या नहीं तो सूक्ष्म अंतर के साथ।

2
ध्यान दें कि हालांकि localPOSIX या Unix नहीं है, यह लिनक्स मानक (LSB) और डेबियन पॉलिसी मानक में निर्दिष्ट और आवश्यक है । ध्यान दें कि esएक अनुवर्ती है rc
स्टीफन चेज़लस

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

19

क्योंकि लोगों की अलग-अलग ज़रूरतें होती हैं और किसी भी परिस्थिति में अपनी ज़रूरतों को पूरा करने के लिए विकल्प रखना अच्छा होता है। एक खोल अपने आप में एक उपकरण है और मेरी राय में किसी अन्य द्वारा बदली जानी चाहिए। Microsoft Windows ने जो चुना है, उसके विपरीत यूनिक्स / लिनक्स की शक्ति है।

इसी तरह ... इतने सारे पाठ संपादक क्यों हैं? अगर पहले से ही एक है तो लोग एक नया ब्राउज़र क्यों विकसित करते हैं? GNOME, KDE, Xfce, LXDE, E17 इत्यादि क्यों है?


12
यकीनन। एक पूछ सकता है "इतने सारे खिड़की प्रबंधक क्यों?" भी। एक यूनिक्स मूल निवासी विपरीत सवाल पूछ सकता है: केवल एक CMD.EXE क्यों? विंडोज इतना कठोर क्यों है और अनुकूलन योग्य नहीं है?
ब्रूस एडिगर

1
@BruceEdiger का क्या मतलब है, सिर्फ एक cmd.exe? इसके विकल्प हैं, यदि आप उनका उपयोग करना चाहते हैं। यहां तक ​​कि स्वयं Microsoft के पास भी विकल्प के रूप में PowerShell है।
मैल्कम

3
यहां तक कि COMMAND.COMडॉस में बदली थी। हालांकि, आपको अक्सर अन्य अनुप्रयोगों (और अन्य उपयोगकर्ताओं) की मान्यताओं के कारण बहुत भंगुर प्रणाली मिली। नतीजतन, कुछ सफल विकल्प हैं CMD.EXE। एक है PowerShell, जिसमें Microsoft की जड़ता का समर्थन है। एक और उदाहरण, अजीब रूप से पर्याप्त है, bashसिगविन समुदाय से सभ्य समर्थन के कारण, मिनगव लोगों का उल्लेख नहीं करना है। विंडो मैनेजरों के लिए, विंडोज़ के पास एक समय में केवल एक ही होता है, लेकिन कई बार समय के साथ-साथ विंडोज वातावरण भी विकसित हुआ है।
RBerteig

इस उत्तर के लिए +1। मुझे लगता है कि इसीलिए हमारे पास इतने सारे विविध यूनिक्स फ्लेवर हैं: AIX, HP-UX, Solaris, Tru64, IRIX, UnixWare, OS X, Linux, FreeBSD, NetBSD, OpenBSD, ..., आप इसे नाम देते हैं!
टोंगा

4

संक्षिप्त जवाब

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

लंबा उत्तर जटिल और कसकर यूनिक्स के इतिहास से जुड़ा हुआ है। इसका कोई तरीका नहीं है कि यह इस पृष्ठ पर एक ही उत्तर पर पकड़ बनाएगा, लेकिन यह व्यापक रूप से (गलत) दस्तावेज है। यूनिक्स के इतिहास से संबंधित वेब और पुस्तकों को देखकर आपको अधिक विस्तृत और सटीक उत्तर मिलेंगे।


2

अलग-अलग वेब ब्राउज़र मौजूद होने के कारण अलग-अलग गोले मौजूद हैं: हर किसी की प्राथमिकता होती है, और कुछ गोले में ऐतिहासिक सामान या गति होती है। प्रत्येक में अलग-अलग विशेषताएं और आइडिओसिप्रेसस हैं।


1

अधिकतर, इतिहास ...

बॉर्न को (औचित्य) SysV यूनिक्स के हिस्से के रूप में विकसित किया गया था, जबकि बीएसडी ने उपयोग किया था csh... बाद में, बोश को बॉर्न शेल (और इसके उन्नत संस्करणों, जैसे ksh) के लिए एक ओपन-सोर्स विकल्प के रूप में विकसित किया गया था। POSIX मानक में एक बॉर्न जैसा शेल अपनाया गया था। ksh कंप्लेंट है और बैश कंप्लेंट हो सकती है।

गोले की तरह cshऔर tcshमूल बॉर्न शेल (जो कमांड पूरा होने की कमी आदि) की तुलना में अंतःक्रियात्मक रूप से उपयोग करना बहुत आसान है, लेकिन स्क्रिप्ट के लिए भयानक हैं ...

कुछ वातावरणों में, जैसे कि यूनिक्स-आधारित एम्बेडेड सिस्टम, स्क्रिप्टिंग फीचर्स, आकार और गति, कमांड पूरा होने जैसी इंटरैक्टिव सुविधाओं की तुलना में अधिक महत्वपूर्ण है, और गोले का एक अलग प्रकार उपयोग किया जाता है।

पोर्टेबल स्क्रिप्टिंग के लिए, आपको POSIX अनुरूप बॉर्न-संस्करण का उपयोग करना चाहिए और एक्सटेंशन से बचना चाहिए।


3
-1 यह सोचने के लिए कि दुनिया SysV से शुरू हुई। बॉर्न शैल 1977 में यूनिक्स v7 में जारी किया गया था, छह साल से पहले SysV जारी किया गया था।
रोब

@Rob, एस / 1977/ 1979 /
स्टीफन Chazelas

पर्याप्त रूप से ... * निक्स इतिहास काफी जटिल है ... en.wikipedia.org/wiki/File:Unix_history-simple.svg
Gert van den Berg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.