"श संगत" होने का क्या अर्थ है?


63

मैंने आमतौर पर गोले के संदर्भ में "श संगत" वाक्यांश का उपयोग किया है। मुझे यकीन नहीं है कि यह उन कार्यक्रमों पर भी लागू होता है जो गोले के भीतर से चलाए जा सकते हैं।

शेल या अन्य प्रोग्राम के लिए "श संगत" होने का क्या मतलब है? "श असंगत" होने का क्या अर्थ होगा?

संपादित करें: बैश और श के बीच अंतर पूछने वाला यह प्रश्न बहुत प्रासंगिक है: श और बैश के बीच का अंतर

मैं अभी भी इसका सीधा जवाब चाहूंगा कि इसका अर्थ "श संगत" होना है। एक उचित उम्मीद यह हो सकती है कि "श संगत" का अर्थ "शेल कमांड लैंग्वेज को लागू करता है" लेकिन फिर इतने "श संगत" गोले क्यों हैं और वे अलग क्यों हैं?


1
शेल स्क्रिप्ट के लिए, यह संदर्भित करता है कि स्क्रिप्ट बॉर्न शेल ( sh) के साथ सिंटैक्स संगत (रन करने योग्य) का उपयोग करती है या नहीं । एक अलग शेल के लिए, यह संदर्भित करता है कि शेल बॉर्न शेल स्क्रिप्ट चला सकता है या नहीं।
हेलोसोच जूल

आप गोले के आविष्कारक जानने के लिए चाहते हैं तो आप पर मेरा उत्तर पर जा सकते हैं unix.stackexchange.com/questions/45684/...
PersianGulf

जवाबों:


116

क्यों कई "श संगत" गोले हैं?

बॉर्न शैल पहले सार्वजनिक रूप से के हिस्से के रूप में 1979 में जारी किया गया था यूनिक्स V7 । चूंकि बहुत अधिक हर यूनिक्स और यूनिक्स जैसी प्रणाली V7 यूनिक्स से उतरती है - भले ही केवल आध्यात्मिक रूप से - बॉर्न शेल हमारे साथ "हमेशा के लिए" रहा हो। ix

बोर्न शेल ने वास्तव में एक पूर्व शेल को बदल दिया, थॉम्पसन शेल को फिर से बनाया , लेकिन यह यूनिक्स के इतिहास में इतनी जल्दी हुआ कि यह सब आज भूल गया है। बॉर्न शेल थॉम्पसन शेल का सुपरसेट है ।²

बोर्न और थॉम्पसन गोले दोनों को बुलाया गया था shखोल POSIX द्वारा निर्दिष्ट भी कहा जाता है sh। इसलिए, जब कोई कहता है sh-असंगत, वे हाथ से खोल के इस श्रृंखला का उल्लेख कर रहे हैं। यदि वे विशिष्ट होना चाहते थे, तो वे "पोसिक्स शेल" या "बॉर्न शेल" कहेंगे

POSIX शेल , KornShell के 1988 संस्करण पर आधारित है , जो बदले में AT & T Unix पर बॉर्न शेल को बदलने के लिए था, जो सुविधाओं के मामले में BSD C शेल को छीन रहा था। इस सीमा तक ksh, जो POSIX शेल का पूर्वज है, अधिकांश यूनिक्स और यूनिक्स जैसी प्रणालियों में आज कोर्न शेल के कुछ संस्करण शामिल हैं। अपवाद आम तौर पर छोटे एम्बेडेड सिस्टम हैं, जो उस स्थान को पूरा नहीं कर सकते हैं जो एक पूर्ण POSIX शेल लेता है।

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

लिनक्स और बैश के बीच के शुरुआती जुड़ाव ने बहुत से अन्य गोले ksh, cshऔर सहित , के भाग्य को सील कर दिया tcsh। आज भी उन गोले का उपयोग करते हुए डाई-हार्ड हैं, लेकिन वे अल्पसंख्यक में बहुत अधिक हैं। ds

यह सब इतिहास बताता है कि रिश्तेदार देर से आने वाले रचनाकारों को क्यों पसंद करते हैं bash, zshऔर yashउन्हें बनाने के लिए चुना- shअसंगत: बॉर्न / पोसिक्स संगतता यूनिसेक्स जैसी प्रणालियों के लिए न्यूनतम शेल है जो व्यापक रूप से गोद लेने के लिए प्रदान करना चाहिए।

कई प्रणालियों में, डिफ़ॉल्ट इंटरैक्टिव कमांड शेल और /bin/shअलग-अलग चीजें हैं। /bin/shशायद:

  • मूल बॉर्न शेल। यह पुराने UNIX® सिस्टम में आम है, जैसे कि Solaris 10 (2005 में जारी) और इसके पूर्ववर्ती ।ors

  • एक POSIX- प्रमाणित शेल। यह नए UNIX® सिस्टम में आम है, जैसे कि Solaris 11 (2010)।

  • Almquist खोल । यह एक खुला स्रोत बॉर्न / पोसिक्स शेल क्लोन है जो मूल रूप से 1989 में यूज़नेट पर जारी किया गया था, जिसे तब एटीके एंड टी सोर्स कोड, 4.4BSD-Lite वाले पहले BSD रिलीज़ में शामिल करने के लिए बर्कले के CSRG में योगदान दिया गया था । अल्मक्विस्ट शेल अक्सर कहा जाता है ash, तब भी जब इसे स्थापित किया जाता है /bin/sh

    बदले में /bin/sh4.4BSD- लाइट सभी आधुनिक BSD डेरिवेटिव्स का आधार बन गया, जिनमें से अधिकांश में एक अल्मक्विस्ट व्युत्पन्न के रूप में शेष है, जिसमें एक प्रमुख अपवाद नीचे दिया गया है। आप नेट कोड और फ्रीबीएसडी के लिए स्रोत कोड रिपॉजिटरी में इस प्रत्यक्ष वंशज को देख सकते हैं : वे दिन 1 से एक अल्मक्विस्ट शेल व्युत्पन्न कर रहे थे।

    ashबीएसडी दुनिया के बाहर दो महत्वपूर्ण कांटे हैं:

    1. dash, प्रसिद्ध/bin/sh कार्यान्वयन के रूप में 2006 में डेबियन और उबंटू द्वारा अपनाया गया । (बैश डेबियन डेरिवेटिव में डिफ़ॉल्ट इंटरेक्टिव कमांड शेल रहता है ।)

    2. ashआदेश में बिजीबॉक्स , जो अक्सर एम्बेडेड Linuxes में प्रयोग किया जाता है और लागू करने के लिए इस्तेमाल किया जा सकता /bin/sh। चूँकि यह पोस्टबेड है dashऔर इसे डेबियन के पुराने ashपैकेज से लिया गया था , इसलिए मैंने इसे व्यस्त बॉक्स में कमांड नाम के बावजूद इसके dashबजाय इसे व्युत्पन्न मानने के लिए चुना है ash

      (बिजीबॉक्स में कम ashबुलाया जाने वाला विकल्प भी शामिल होता है hush। आमतौर पर दोनों में से किसी एक को किसी भी दिए गए बिजीबॉक्स बाइनरी में बनाया जाएगा: ashडिफॉल्ट रूप से, लेकिन hushजब स्पेस वास्तव में टाइट होता है। इस प्रकार, /bin/shबिजीबॉक्स आधारित सिस्टम हमेशा की dashतरह नहीं होता है ।)

  • जीएनयू बैश , जो अपने गैर-पॉसिक्स एक्सटेंशन के अधिकांश को निष्क्रिय कर देता है जब इसे कहा जाता हैsh

    डेबियन और इसके डेरिवेटिव को छोड़कर लिनक्स के डेस्कटॉप और सर्वर वेरिएंट पर यह विकल्प विशिष्ट है। मैक ओएस एक्स ने 2003 में रिलीज हुई पैंथर के बाद से ऐसा किया भी है।

  • ksh93POSIX एक्सटेंशन वाला एक खोल , जैसा कि OpenBSD में है । हालांकि ओपनबीएसडी शेल बोर्न और पोसिक्स गोले के साथ सिंटैक्स और सिमेंटिक असंगतताओं से बचने के लिए व्यवहार में बदलाव shकरता है, जब इसे कहा जाता है , तो यह अपने किसी भी शुद्ध एक्सटेंशन को अक्षम नहीं करता है, जो कि पुराने गोले के साथ संघर्ष नहीं करता है।

    यह आम नहीं है; आप उम्मीद नहीं करनी चाहिए ksh93में सुविधाओं /bin/sh

मैंने "शैल स्क्रिप्ट" का उपयोग एक सामान्य शब्द के रूप में किया है जिसका अर्थ है बॉर्न / POSIX शेल स्क्रिप्टिंग। यह बॉर्न परिवार के गोले की सर्वव्यापकता के कारण है। अन्य गोले पर स्क्रिप्टिंग के बारे में बात करने के लिए, आपको "सी शेल स्क्रिप्ट" की तरह एक क्वालीफायर देना होगा। यहां तक ​​कि सिस्टम पर जहां एक सी परिवार का शेल डिफ़ॉल्ट इंटरेक्टिव शेल है, स्क्रिप्टिंग के लिए बॉर्न शेल का उपयोग करना बेहतर है।

यह बता रहा है कि जब विकिपीडिया यूनिक्स के गोले को वर्गीकृत करता है , तो वे उन्हें बॉर्न शेल संगत, सी शेल संगत और "अन्य" में समूहित करते हैं।

यह आरेख मदद कर सकता है:

यूनिक्स गोले: बॉर्न, कोर्न, पोसिक्स, सी और आर सी शैल परिवार

(एसवीजी संस्करण, 31 केबी के लिए क्लिक करें, या पूर्ण आकार के पीएनजी संस्करण , 218 केबी देखें।)

"श असंगत" होने का क्या अर्थ होगा?

shआमतौर पर एक- असंगत बात करने वाले व्यक्ति का मतलब तीन चीजों में से एक होता है:

  1. वे उन "अन्य" गोले में से एक का उल्लेख कर रहे हैं

  2. वे बॉर्न और सी शेल परिवारों के बीच अंतर कर रहे हैं।

  3. वे एक बोर्न परिवार के खोल में कुछ विशिष्ट विशेषता के बारे में बात कर रहे हैं जो अन्य सभी बॉर्न परिवार के गोले में नहीं है। ksh93, bashऔर zshविशेष रूप से कई विशेषताएं हैं जो पुराने "मानक" गोले में मौजूद नहीं हैं। उन तीनों को आपस में साझा किए जाने के बाद भी कई तरह से परस्पर-असंगत हो जाता है ksh88

शीर्ष पर एक #!/bin/sh शेबंग लाइन के साथ शेल स्क्रिप्ट लिखने के लिए एक क्लासिक त्रुटि है , लेकिन बैश या कॉर्न शेल एक्सटेंशन का उपयोग करने के लिए। चूँकि /bin/shइन दिनों बहुत सारे सिस्टमों के ऊपर कोर्न / POSIX परिवार के आरेख में से एक है, इस तरह की स्क्रिप्ट उस सिस्टम पर काम करेगी जिस पर वे लिखे गए हैं, लेकिन फिर सिस्टम पर विफल होते हैं जहाँ /bin/shशेल के व्यापक बॉर्न परिवार से कुछ होता है। यदि स्क्रिप्ट इस तरह के एक्सटेंशन का उपयोग करती है, तो सबसे अच्छा अभ्यास है लाइनों का उपयोग करना #!/bin/bashया उसे #!/bin/kshशेब करना।

यह जांचने के कई तरीके हैं कि क्या किसी दिए गए बॉर्न परिवार की शेल स्क्रिप्ट पोर्टेबल है:

  • इस पर चलाएं checkbashisms, डेबियन प्रोजेक्ट का एक उपकरण जो " बशीज़ " के लिए एक स्क्रिप्ट की जांच करता है ।

  • इसके तहत चलाएं posh, डेबियन पैकेज रिपॉजिटरी में एक शेल जो जानबूझकर केवल SUS3 द्वारा निर्दिष्ट सुविधाओं को लागू करता है , साथ ही कुछ अन्य छोटी विशेषताओं को भी

  • के तहत इसे चलाने oshसे Schily उपकरण परियोजना , की बॉर्न 2005 में ओपनसोलारिस के हिस्से के रूप के रूप में खुला सूर्य द्वारा sourced शैल, यह सबसे आसान तरीकों में 1979 शैली बॉर्न एक आधुनिक कंप्यूटर पर शैल प्राप्त करने के लिए में से एक बना एक उन्नत संस्करण।

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

    शिल्ली टूल्स में एक शेल भी शामिल है bsh, लेकिन यह एक ऐतिहासिक विषमता है जो एक बॉर्न परिवार का खोल नहीं है।

  • GNU Autoconf मैनुअल में पोर्टेबल शेल प्रोग्रामिंग चैप्टर के माध्यम से जाना । आप कुछ समस्याग्रस्त निर्माणों को पहचान सकते हैं जिनके बारे में यह आपकी लिपियों में बात करता है।

वे अलग क्यों हैं?

समान कारणों से सभी "नया और बेहतर!" चीजें अलग हैं:

  • बेहतर संस्करण केवल पश्चगामी संगतता को तोड़कर बेहतर बनाया जा सकता है।

  • किसी ने किसी काम के लिए एक अलग तरीके के बारे में सोचा, जो उन्हें बेहतर लगता है, लेकिन जो पुराने तरीके से काम करता है, वैसा नहीं है।

  • किसी ने एक पुराने मानक को पूरी तरह से समझने के बिना इसे लागू करने की कोशिश की, इसलिए उन्होंने गड़बड़ कर दी और एक अनैतिक अंतर पैदा कर दिया।


फुटनोट्स और एसाइड्स :

  1. बीएसडी यूनिक्स के शुरुआती संस्करण सिर्फ वी 6 यूनिक्स के लिए ऐड-ऑन सॉफ़्टवेयर संग्रह थे। चूंकि बॉर्न शेल को V7 तक AT & T Unix में नहीं जोड़ा गया था, BSD ने तकनीकी रूप से बॉर्न शेल होने की शुरुआत नहीं की थी। थॉम्पसन खोल की आदिम प्रकृति के लिए बीएसडी का उत्तर सी शेल था

    फिर भी, बीएसडी (2.9BSD और 3BSD) के पहले स्टैंडअलोन संस्करण V7 या इसके पोर्टेबल उत्तराधिकारी UNIX / 32V पर आधारित थे , इसलिए उन्होंने बॉर्न शेल को शामिल किया

    (2BSD लाइन डिजिटल के लिए बीएसडी के एक समानांतर कांटा में बदल गया पीडीपी मिनी कंप्यूटरों , जबकि 3BSD और 4BSD लाइनों पर चला गया जैसे नए कंप्यूटर प्रकार का लाभ लेने के Vaxen और यूनिक्स वर्कस्टेशन 2.9BSD अनिवार्य रूप से 4.1cBSD की पीडीपी संस्करण था,। वे थे समकालीन, और साझा कोड । प्रस्तावित ड्राफ्ट पैरा बस गायब नहीं था, जब VAX पहुंचे, तो 2BSD लाइन है अभी भी shambling साथ ।)

    यह कहना सुरक्षित है कि बॉर्न शेल 1983 तक यूनिक्स दुनिया में हर जगह था। कंप्यूटिंग उद्योग में "हमेशा" के लिए एक अच्छा अनुमान है। MS-DOS को उस वर्ष (awww, cuuute!) और पहले 24-बिट Macintosh को इसके 9 "B & W स्क्रीन के साथ - ग्रेस्केल नहीं है, शाब्दिक रूप से काले और सफेद - अगले साल की शुरुआत तक नहीं आएगा।

  2. थॉम्पसन खोल आज के मानकों से काफी आदिम था । यह केवल एक संवादात्मक कमांड शेल था, आज हम जिस स्क्रिप्ट प्रोग्रामिंग वातावरण की अपेक्षा करते हैं, उसके बजाय। इसमें पाइप और I / O पुनर्निर्देशन जैसी चीजें थीं, जिन्हें हम "यूनिक्स शेल" के प्रोटोटाइप के रूप में मानते हैं, ताकि हम एमएस-डॉस कमांड शेल को यूनिक्स से प्राप्त करने के बारे में सोचें ।

    बॉर्न शैल भी प्रतिस्थापित PWB खोल , जो प्रोग्रामिंग की तरह थॉम्पसन खोल करने के लिए महत्वपूर्ण बातें जोड़ दिया था ( if, switchऔर while) और वातावरण चरों के प्रारंभिक रूप। PWB शेल थॉम्पसन शेल की तुलना में कम अच्छी तरह से याद किया जाता है क्योंकि यह यूनिक्स के हर संस्करण का हिस्सा नहीं था।

  3. जब कोई POSIX बनाम बॉर्न शेल संगतता के बारे में विशिष्ट नहीं होता है, तो उन चीजों की एक पूरी श्रृंखला होती है जिनका वे मतलब हो सकते हैं।

    एक चरम पर, वे 1979 बॉर्न शेल का उपयोग अपने बेसलाइन के रूप में कर सकते थे। एक " shसंगत स्क्रिप्ट" इस अर्थ में मतलब होता है कि यह सच बॉर्न शैल या उसके उत्तराधिकारियों और क्लोन से किसी पर पूरी तरह से चलाने के लिए आशा की जाती है: ash, bash, ksh, zsh, आदि

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

  4. हालांकि कोर्न शेल की जड़ें 1980 के दशक की शुरुआत में वापस जा रही थीं, एटी एंड टी ने इसे 1988 में सिस्टम वी रिलीज़ 4 तक यूनिक्स में शिप नहीं किया था । चूंकि बहुत सारे वाणिज्यिक यूनिक्स एसवीआर 4 पर आधारित हैं, इसलिए यह kshप्रत्येक प्रासंगिक वाणिज्यिक यूनिक्स से बहुत अधिक है। 1980 के दशक के उत्तरार्ध में।

    (के आधार पर कुछ अजीब यूनिक्स की झलक SVR3 और पहले SVR4 की रिहाई अतीत बाजार के टुकड़े पर आयोजन किया, लेकिन वे थे दीवार के खिलाफ पहले जब क्रांति आ गया।)

    1988 भी वर्ष का पहला पोसिक्स मानक था, जिसका कोर्न शेल आधारित "पोसिक्स शेल" था। बाद में, 1993 में, कॉर्न शेल का एक बेहतर संस्करण सामने आया। चूंकि POSIX ने प्रभावी रूप से मूल को स्थान पर रखा, kshदो प्रमुख संस्करणों में कांटा: ksh88और ksh93, उनके विभाजन में शामिल वर्षों के नाम पर।

    ksh88पूरी तरह से POSIX- संगत नहीं है, हालांकि अंतर छोटे हैं, इसलिए कि ksh88खोल के कुछ संस्करणों को POSIX- संगत होने के लिए पैच किया गया था। (यह डॉ। डेविड जी। कॉर्न के साथ स्लैशडॉट पर एक दिलचस्प साक्षात्कार से । हां, उस व्यक्ति ने जो शेल लिखा था।)

    ksh93है POSIX खोल के एक पूरी तरह से संगत सुपरसेट । पर विकास ksh93किया गया है छिटपुट के बाद से प्राथमिक स्रोत भंडार एटी एंड टी से चले गए GitHub के लिए नवीनतम रिलीज होने के बारे में 3 वर्ष के रूप में मैं इस, ksh93v लिखने के साथ। ( ksh931993 से परे रिलीज़ संस्करणों को प्रदर्शित करने के लिए जोड़े गए प्रत्ययों के साथ परियोजना का आधार नाम बना हुआ है।)

    सिस्टम जो पोसिक्स शेल से एक अलग चीज़ के रूप में एक कोर्न शेल शामिल करते हैं, आमतौर पर इसे उपलब्ध कराते हैं /bin/ksh, हालांकि कभी-कभी यह कहीं और छिपा होता है।

    जब हम नाम के बारे में kshया कोर्न शेल के बारे में बात करते हैं, तो हम उन ksh93विशेषताओं के बारे में बात कर रहे हैं जो इसे इसके पीछे-संगत बॉर्न और पोसिक्स शेल सबसेट से अलग करती हैं। आप शायद ही ksh88आज शुद्ध भर में दौड़ते हैं।

  5. एटी एंड टी ने मार्च 2000 तक कोर्न शेल स्रोत कोड का स्वामित्व रखा । उस समय तक, GNU बैश के साथ लिनक्स का जुड़ाव बहुत मजबूत था। बैश और ksh93 प्रत्येक के दूसरे पर फायदे हैं , लेकिन इस बिंदु पर जड़ता लिनक्स को बैश के साथ मजबूती से जुड़ा रखती है।

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

    pdkshएटी एंड टी के स्रोत कोड को सही कोर्न शेल में जारी करने के समय के बारे में काम बंद कर दिया गया। OpenBSD: दो मुख्य कांटे है कि अभी भी रखा जाता है हालांकि, कर रहे हैं pdkshऔर MirBSD कॉर्न शैल,mksh

    मुझे यह दिलचस्प लगा कि mkshवर्तमान में साइगविन के लिए पैक किया गया एकमात्र कोर्न शेल कार्यान्वयन है।

  6. GNU बैश कई मायनों में POSIX से आगे निकल जाता है, लेकिन आप इसे अधिक शुद्ध POSIX मोड में चलाने के लिए कह सकते हैं

  7. csh/ tcshआमतौर पर 1990 के दशक की शुरुआत में बीएसडी यूनिक्स पर डिफ़ॉल्ट इंटरैक्टिव शेल था।

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

    फ्रीबीएसडी अभी भी tcshडिफ़ॉल्ट शेल के रूप में उपयोग करने का दावा करता है , लेकिन यहां मेरे पास फ्रीबीएसडी 10 वीएम पर, डिफ़ॉल्ट शेल पॉसिक्स-संगत अल्मक्विस्ट शेल वेरिएंट में से एक प्रतीत होता है । यह नेटबीएसडी पर भी सही है।

    OpenBSD pdkshइसके बजाय डिफ़ॉल्ट शेल के कांटे का उपयोग करता है ।

    लिनक्स और OS X की उच्च लोकप्रियता कुछ लोगों को इच्छा होती है कि FreeBSD भी Bash में बदल जाएगा, लेकिन वे दार्शनिक कारणों से जल्द ही ऐसा नहीं करेंगे । इसे स्विच करना आसान है , अगर यह आपको परेशान करता है।

  8. /bin/shइन दिनों वास्तव में वैनिला बॉर्न शेल के साथ एक प्रणाली ढूंढना दुर्लभ है । संगतता परीक्षण के लिए आपको किसी चीज़ को पर्याप्त रूप से बंद करने के लिए अपने रास्ते से बाहर जाना होगा।

    मैं एक आधुनिक कंप्यूटर पर एक वास्तविक 1979 विंटेज बॉर्न शेल चलाने के केवल एक ही तरीके से अवगत हूं: कंप्यूटर इतिहास सिमुलेशन प्रोजेक्ट से SIMH PDP-11 सिम्युलेटर के साथ प्राचीन यूनिक्स V7 डिस्क छवियों का उपयोग करें । SIMH हर आधुनिक कंप्यूटर पर चलता है , न कि यूनिक्स की तरह। SIMH यहां तक ​​कि Android और iOS पर भी चलता है ।

    ओपनसोलारिस के साथ , सन ने पहली बार बॉर्न शेल के एसवीआर 4 संस्करण को खोला। इससे पहले, बॉर्न शेल के बाद के V7 संस्करणों के लिए स्रोत कोड केवल यूनिक्स स्रोत कोड लाइसेंस वाले लोगों के लिए उपलब्ध था।

    यह कोड अब अलग-अलग स्रोतों से जोड़े गए ओपनऑलारिसिस प्रोजेक्ट के बाकी हिस्सों से अलग-अलग उपलब्ध है।

    सबसे प्रत्यक्ष स्रोत हीरलूम बॉर्न शेल परियोजना है । 2005 के ओपनसोलारिस के मूल रिलीज के तुरंत बाद यह उपलब्ध हो गया। अगले कुछ महीनों में कुछ पोर्टेबिलिटी और बग फिक्सिंग का काम किया गया था, लेकिन फिर परियोजना पर विकास रुक गया।

    Jörg Schilling ने oshअपने Schily Tools पैकेज की तरह इस कोड के संस्करण को बनाए रखने का बेहतर काम किया है । इसके लिए ऊपर देखें।

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

    यह बताने का एक तरीका है कि क्या आप मूल बॉर्न शेल पर हैं या नहीं, यह देखने के लिए कि क्या यह थॉम्पसन शेल से संक्रमण को कम करने के लिए जोड़ा गया एक अनिर्दिष्ट सुविधा का समर्थन करता है: ^के लिए एक उपनाम के रूप में |। कहने का तात्पर्य यह है कि, ls ^ moreKorn या POSIX प्रकार के शेल पर एक कमांड एक त्रुटि देगा, लेकिन यह ls | moreएक सच्चे बॉर्न शेल की तरह व्यवहार करेगा ।

  9. कभी कभी आप एक मुठभेड़ fish, scshया rc/esपक्षपाती है, लेकिन वे सी खोल प्रशंसकों से भी दुर्लभ हैं।

    rcगोले के परिवार सामान्यतः यूनिक्स / लिनक्स सिस्टम पर नहीं किया जाता है, लेकिन परिवार ऐतिहासिक रूप से महत्वपूर्ण है, जो है कि यह कैसे ऊपर चित्र में एक स्थान अर्जित किया। बेल लैब्स ऑपरेटिंग सिस्टम से योजना 9rc का मानक शेल है, जो 10 वीं संस्करण के यूनिक्स का एक प्रकार है , जिसे बेल लैब्स के भाग के रूप में बनाया गया है, जो ऑपरेटिंग सिस्टम डिजाइन में अनुसंधान को जारी रखता है। यह एक प्रोग्रामिंग स्तर पर बॉर्न और सी शेल दोनों के साथ असंगत है; वहाँ शायद एक सबक है।

    सबसे सक्रिय संस्करण टोबी गुडविन द्वारा बनाए रखा गयाrc प्रतीत होता है , जो बायरोन जेबिसिस द्वारा यूनिक्स क्लोन पर आधारित है ।rc


यदि आप अधिक संबंध जानना चाहते हैं, जैसे UNOS "कमांड", "बीश" और हाल ही में बॉर्न शेल, तो मुझे एक नोट भेजें। एक संकेत के रूप में: UNOS कमांड में एक बिल्ड कमांड "डू" था जो तर्कों के साथ एक-लाइन शेल स्क्रिप्ट के रूप में कार्य करता था। इस विचार को बॉर्न शेल में "डोश" के रूप में स्थानांतरित कर दिया गया था और पैरामीटर करने योग्य उपनामों की अनुमति देता है, कुछ जिसे आप ksh या bash से प्राप्त नहीं कर सकते हैं।
शास्त्री

यह ध्यान देने योग्य हो सकता है कि pdksh अपने आप में Forsyth शेल पर आधारित है। आज के समय में ज्यादातर लोग भूल जाते हैं लेकिन pdksh विरासत में कुछ ऐतिहासिक महत्व है, लेकिन यह भी कि यह minix के कुछ संस्करणों का खोल था और msdos के लिए रखा गया था।
स्टीफन चेजलस

25

"श संगत" पोसिक्सsh को संदर्भित करता है , मूल शेल जिसे सभी संगत प्रणालियों पर मौजूद होना आवश्यक है। श-संगत स्क्रिप्ट को किसी भी POSIX- संगत मशीन पर काम करना चाहिए।

कारण यह इतना कहने के लिए आवश्यक है कि आमतौर पर है /bin/shकरने के लिए एक सिमलिंक है /bin/bash, जो कुछ Bashisms लिपियों कि खुद की घोषणा का उपयोग करने में पर्ची करने दिया है shसाथ #!/bin/sh। इन लिपियों प्रणाली है कि उपयोग नहीं करते हैं पर काम करने के लिए असफल bashके रूप में /bin/shहमेशा के लिए, कुछ व्यावसायिक Unices सहित, और डेबियन और डेरिवेटिव हाल ही में।

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

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

गैर POSIX में सुविधाओं bashऔर tcshऔर zshऔर अन्य वर्तमान गोले के सभी उपयोगी होते हैं , और अवसरों जहाँ आप चाहते हैं या उन्हें जरूरत हो सकती है बहुत सारे हैं। उन्हें सिर्फ एक स्क्रिप्ट में इस्तेमाल नहीं किया जाना चाहिए जो खुद के साथ काम करने की घोषणा करता है /bin/sh, क्योंकि आप उन विशेषताओं पर भरोसा नहीं कर सकते हैं जो आपके द्वारा चलाए जा shरहे सिस्टम पर आधार कार्यान्वयन में हैं।

एक स्क्रिप्ट जिसे साहचर्य सरणियों का उपयोग करने, कहने, करने की आवश्यकता है, यह सुनिश्चित करना चाहिए कि इसे इसके bashबजाय चलाया जाए sh:

#!/bin/bash
declare -A array

वह कहीं भी साथ काम करेगा bash। यह बताएं कि विस्तारित कार्यक्षमता की आवश्यकता नहीं है और पोर्टेबल होने का मतलब यह घोषित करना चाहिए कि वे उपयोग करते हैं shऔर बेस शेल कमांड भाषा से चिपके रहते हैं।

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