उस ने कहा, कोर्न शेल - पोसिक्स शेल से अलग एक चीज के रूप में - वास्तव में वाणिज्यिक यूनिक्स दुनिया के बाहर कभी लोकप्रिय नहीं हुआ। इसका कारण यह है कि इसका उदय यूनिक्स के शुरुआती वर्षों के व्यावसायीकरण के साथ हुआ था, इसलिए यह यूनिक्स युद्धों में फंस गया । बीएसडी यूनिक्स ने इसे सी शेल के पक्ष में छोड़ दिया, और इसका स्रोत कोड लिनक्स में उपयोग के लिए स्वतंत्र रूप से उपलब्ध नहीं था जब यह शुरू हुआ। तो, जब शुरुआती लिनक्स वितरक अपने लिनक्स कर्नेल के साथ जाने के लिए कमांड शेल की तलाश में थे, उन्होंने आमतौर पर GNU बैश को चुना , उन sh
-compatibles में से एक, जिसके बारे में आप बात कर रहे हैं
यह सब इतिहास बताता है कि रिश्तेदार देर से आने वाले रचनाकारों को क्यों पसंद करते हैं bash
, zsh
और yash
उन्हें बनाने के लिए चुना- sh
असंगत: बॉर्न / पोसिक्स संगतता यूनिसेक्स जैसी प्रणालियों के लिए न्यूनतम शेल है जो व्यापक रूप से गोद लेने के लिए प्रदान करना चाहिए।
मैंने "शैल स्क्रिप्ट" का उपयोग एक सामान्य शब्द के रूप में किया है जिसका अर्थ है बॉर्न / POSIX शेल स्क्रिप्टिंग। यह बॉर्न परिवार के गोले की सर्वव्यापकता के कारण है। अन्य गोले पर स्क्रिप्टिंग के बारे में बात करने के लिए, आपको "सी शेल स्क्रिप्ट" की तरह एक क्वालीफायर देना होगा। यहां तक कि सिस्टम पर जहां एक सी परिवार का शेल डिफ़ॉल्ट इंटरेक्टिव शेल है, स्क्रिप्टिंग के लिए बॉर्न शेल का उपयोग करना बेहतर है।
यह जांचने के कई तरीके हैं कि क्या किसी दिए गए बॉर्न परिवार की शेल स्क्रिप्ट पोर्टेबल है:
बीएसडी यूनिक्स के शुरुआती संस्करण सिर्फ वी 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 स्क्रीन के साथ - ग्रेस्केल नहीं है, शाब्दिक रूप से काले और सफेद - अगले साल की शुरुआत तक नहीं आएगा।
थॉम्पसन खोल आज के मानकों से काफी आदिम था । यह केवल एक संवादात्मक कमांड शेल था, आज हम जिस स्क्रिप्ट प्रोग्रामिंग वातावरण की अपेक्षा करते हैं, उसके बजाय। इसमें पाइप और I / O पुनर्निर्देशन जैसी चीजें थीं, जिन्हें हम "यूनिक्स शेल" के प्रोटोटाइप के रूप में मानते हैं, ताकि हम एमएस-डॉस कमांड शेल को यूनिक्स से प्राप्त करने के बारे में सोचें ।
बॉर्न शैल भी प्रतिस्थापित PWB खोल , जो प्रोग्रामिंग की तरह थॉम्पसन खोल करने के लिए महत्वपूर्ण बातें जोड़ दिया था ( if
, switch
और while
) और वातावरण चरों के प्रारंभिक रूप। PWB शेल थॉम्पसन शेल की तुलना में कम अच्छी तरह से याद किया जाता है क्योंकि यह यूनिक्स के हर संस्करण का हिस्सा नहीं था।
जब कोई POSIX बनाम बॉर्न शेल संगतता के बारे में विशिष्ट नहीं होता है, तो उन चीजों की एक पूरी श्रृंखला होती है जिनका वे मतलब हो सकते हैं।
एक चरम पर, वे 1979 बॉर्न शेल का उपयोग अपने बेसलाइन के रूप में कर सकते थे। एक " sh
संगत स्क्रिप्ट" इस अर्थ में मतलब होता है कि यह सच बॉर्न शैल या उसके उत्तराधिकारियों और क्लोन से किसी पर पूरी तरह से चलाने के लिए आशा की जाती है: ash
, bash
, ksh
, zsh
, आदि
अन्य चरम पर कोई इसके बजाय एक आधारभूत के रूप में POSIX द्वारा निर्दिष्ट शेल को मानता है। हम इन दिनों "मानक" के रूप में बहुत सारे POSIX शेल सुविधाओं को लेते हैं जो हम अक्सर भूल जाते हैं कि वे वास्तव में बॉर्न शेल में मौजूद नहीं थे: अंतर्निहित अंकगणित, नौकरी नियंत्रण, कमांड इतिहास, उपनाम, कमांड लाइन संपादन, $()
कमांड का रूप प्रतिस्थापन, आदि।
हालांकि कोर्न शेल की जड़ें 1980 के दशक की शुरुआत में वापस जा रही थीं, एटी एंड टी ने इसे 1988 में सिस्टम वी रिलीज़ 4 तक यूनिक्स में शिप नहीं किया था । चूंकि बहुत सारे वाणिज्यिक यूनिक्स एसवीआर 4 पर आधारित हैं, इसलिए यह ksh
प्रत्येक प्रासंगिक वाणिज्यिक यूनिक्स से बहुत अधिक है। 1980 के दशक के उत्तरार्ध में।
(के आधार पर कुछ अजीब यूनिक्स की झलक SVR3 और पहले SVR4 की रिहाई अतीत बाजार के टुकड़े पर आयोजन किया, लेकिन वे थे दीवार के खिलाफ पहले जब क्रांति आ गया।)
1988 भी वर्ष का पहला पोसिक्स मानक था, जिसका कोर्न शेल आधारित "पोसिक्स शेल" था। बाद में, 1993 में, कॉर्न शेल का एक बेहतर संस्करण सामने आया। चूंकि POSIX ने प्रभावी रूप से मूल को स्थान पर रखा, ksh
दो प्रमुख संस्करणों में कांटा: ksh88
और ksh93
, उनके विभाजन में शामिल वर्षों के नाम पर।
ksh88
पूरी तरह से POSIX- संगत नहीं है, हालांकि अंतर छोटे हैं, इसलिए कि ksh88
खोल के कुछ संस्करणों को POSIX- संगत होने के लिए पैच किया गया था। (यह डॉ। डेविड जी। कॉर्न के साथ स्लैशडॉट पर एक दिलचस्प साक्षात्कार से । हां, उस व्यक्ति ने जो शेल लिखा था।)
ksh93
है POSIX खोल के एक पूरी तरह से संगत सुपरसेट । पर विकास ksh93
किया गया है छिटपुट के बाद से प्राथमिक स्रोत भंडार एटी एंड टी से चले गए GitHub के लिए नवीनतम रिलीज होने के बारे में 3 वर्ष के रूप में मैं इस, ksh93v लिखने के साथ। ( ksh93
1993 से परे रिलीज़ संस्करणों को प्रदर्शित करने के लिए जोड़े गए प्रत्ययों के साथ परियोजना का आधार नाम बना हुआ है।)
सिस्टम जो पोसिक्स शेल से एक अलग चीज़ के रूप में एक कोर्न शेल शामिल करते हैं, आमतौर पर इसे उपलब्ध कराते हैं /bin/ksh
, हालांकि कभी-कभी यह कहीं और छिपा होता है।
जब हम नाम के बारे में ksh
या कोर्न शेल के बारे में बात करते हैं, तो हम उन ksh93
विशेषताओं के बारे में बात कर रहे हैं जो इसे इसके पीछे-संगत बॉर्न और पोसिक्स शेल सबसेट से अलग करती हैं। आप शायद ही ksh88
आज शुद्ध भर में दौड़ते हैं।
एटी एंड टी ने मार्च 2000 तक कोर्न शेल स्रोत कोड का स्वामित्व रखा । उस समय तक, GNU बैश के साथ लिनक्स का जुड़ाव बहुत मजबूत था। बैश और ksh93
प्रत्येक के दूसरे पर फायदे हैं , लेकिन इस बिंदु पर जड़ता लिनक्स को बैश के साथ मजबूती से जुड़ा रखती है।
यही कारण है कि शुरुआती लिनक्स विक्रेता आमतौर पर जीएनयू बैश का चयन करते हैं pdksh
, जो उस समय उपलब्ध था जब लिनक्स शुरू हो रहा था, मुझे लगता है कि यह इसलिए है क्योंकि बाकी के बहुत सारे उपयोगकर्ता भी जीएनयू प्रोजेक्ट से आए थे । बैश भी कुछ हद तक अधिक उन्नत है pdksh
, क्योंकि बैश डेवलपर्स कॉर्न शेल विशेषताओं की नकल करने के लिए खुद को सीमित नहीं करते हैं।
pdksh
एटी एंड टी के स्रोत कोड को सही कोर्न शेल में जारी करने के समय के बारे में काम बंद कर दिया गया। OpenBSD: दो मुख्य कांटे है कि अभी भी रखा जाता है हालांकि, कर रहे हैं pdksh
और MirBSD कॉर्न शैल,mksh
।
मुझे यह दिलचस्प लगा कि mksh
वर्तमान में साइगविन के लिए पैक किया गया एकमात्र कोर्न शेल कार्यान्वयन है।
GNU बैश कई मायनों में POSIX से आगे निकल जाता है, लेकिन आप इसे अधिक शुद्ध POSIX मोड में चलाने के लिए कह सकते हैं ।
csh
/ tcsh
आमतौर पर 1990 के दशक की शुरुआत में बीएसडी यूनिक्स पर डिफ़ॉल्ट इंटरैक्टिव शेल था।
बीएसडी संस्करण के रूप में , मैक ओएस एक्स के शुरुआती संस्करण इस प्रकार थे, मैक ओएस एक्स 10.2 "जगुआर" के माध्यम से । ओएस एक्स ने ओएस एक्स 10.3 "पैंथर" में डिफ़ॉल्ट शेल tcsh
को बैश से स्विच किया । यह परिवर्तन 10.2 या उससे पहले के अपग्रेड किए गए सिस्टम को प्रभावित नहीं करता था। उन परिवर्तित प्रणालियों पर मौजूदा उपयोगकर्ताओं ने अपना खोल रखा था ।tcsh
फ्रीबीएसडी अभी भी tcsh
डिफ़ॉल्ट शेल के रूप में उपयोग करने का दावा करता है , लेकिन यहां मेरे पास फ्रीबीएसडी 10 वीएम पर, डिफ़ॉल्ट शेल पॉसिक्स-संगत अल्मक्विस्ट शेल वेरिएंट में से एक प्रतीत होता है । यह नेटबीएसडी पर भी सही है।
OpenBSD pdksh
इसके बजाय डिफ़ॉल्ट शेल के कांटे का उपयोग करता है ।
लिनक्स और OS X की उच्च लोकप्रियता कुछ लोगों को इच्छा होती है कि FreeBSD भी Bash में बदल जाएगा, लेकिन वे दार्शनिक कारणों से जल्द ही ऐसा नहीं करेंगे । इसे स्विच करना आसान है , अगर यह आपको परेशान करता है।
/bin/sh
इन दिनों वास्तव में वैनिला बॉर्न शेल के साथ एक प्रणाली ढूंढना दुर्लभ है । संगतता परीक्षण के लिए आपको किसी चीज़ को पर्याप्त रूप से बंद करने के लिए अपने रास्ते से बाहर जाना होगा।
मैं एक आधुनिक कंप्यूटर पर एक वास्तविक 1979 विंटेज बॉर्न शेल चलाने के केवल एक ही तरीके से अवगत हूं: कंप्यूटर इतिहास सिमुलेशन प्रोजेक्ट से SIMH PDP-11 सिम्युलेटर के साथ प्राचीन यूनिक्स V7 डिस्क छवियों का उपयोग करें । SIMH हर आधुनिक कंप्यूटर पर चलता है , न कि यूनिक्स की तरह। SIMH यहां तक कि Android और iOS पर भी चलता है ।
ओपनसोलारिस के साथ , सन ने पहली बार बॉर्न शेल के एसवीआर 4 संस्करण को खोला। इससे पहले, बॉर्न शेल के बाद के V7 संस्करणों के लिए स्रोत कोड केवल यूनिक्स स्रोत कोड लाइसेंस वाले लोगों के लिए उपलब्ध था।
यह कोड अब अलग-अलग स्रोतों से जोड़े गए ओपनऑलारिसिस प्रोजेक्ट के बाकी हिस्सों से अलग-अलग उपलब्ध है।
सबसे प्रत्यक्ष स्रोत हीरलूम बॉर्न शेल परियोजना है । 2005 के ओपनसोलारिस के मूल रिलीज के तुरंत बाद यह उपलब्ध हो गया। अगले कुछ महीनों में कुछ पोर्टेबिलिटी और बग फिक्सिंग का काम किया गया था, लेकिन फिर परियोजना पर विकास रुक गया।
Jörg Schilling ने osh
अपने Schily Tools पैकेज की तरह इस कोड के संस्करण को बनाए रखने का बेहतर काम किया है । इसके लिए ऊपर देखें।
ध्यान रखें कि 2005 के स्रोत कोड रिलीज़ से प्राप्त इन शेल में मल्टी-बाइट कैरेक्टर सेट सपोर्ट, जॉब कंट्रोल, शेल फ़ंक्शंस और अन्य सुविधाएँ हैं जो मूल 1979 बॉर्न शेल में मौजूद नहीं हैं।
यह बताने का एक तरीका है कि क्या आप मूल बॉर्न शेल पर हैं या नहीं, यह देखने के लिए कि क्या यह थॉम्पसन शेल से संक्रमण को कम करने के लिए जोड़ा गया एक अनिर्दिष्ट सुविधा का समर्थन करता है: ^
के लिए एक उपनाम के रूप में |
। कहने का तात्पर्य यह है कि, ls ^ more
Korn या POSIX प्रकार के शेल पर एक कमांड एक त्रुटि देगा, लेकिन यह ls | more
एक सच्चे बॉर्न शेल की तरह व्यवहार करेगा ।
कभी कभी आप एक मुठभेड़ fish
, scsh
या rc/es
पक्षपाती है, लेकिन वे सी खोल प्रशंसकों से भी दुर्लभ हैं।
rc
गोले के परिवार सामान्यतः यूनिक्स / लिनक्स सिस्टम पर नहीं किया जाता है, लेकिन परिवार ऐतिहासिक रूप से महत्वपूर्ण है, जो है कि यह कैसे ऊपर चित्र में एक स्थान अर्जित किया। बेल लैब्स ऑपरेटिंग सिस्टम से योजना 9rc
का मानक शेल है, जो 10 वीं संस्करण के यूनिक्स का एक प्रकार है , जिसे बेल लैब्स के भाग के रूप में बनाया गया है, जो ऑपरेटिंग सिस्टम डिजाइन में अनुसंधान को जारी रखता है। यह एक प्रोग्रामिंग स्तर पर बॉर्न और सी शेल दोनों के साथ असंगत है; वहाँ शायद एक सबक है।
सबसे सक्रिय संस्करण टोबी गुडविन द्वारा बनाए रखा गयाrc
प्रतीत होता है , जो बायरोन जेबिसिस द्वारा यूनिक्स क्लोन पर आधारित है ।rc
sh
) के साथ सिंटैक्स संगत (रन करने योग्य) का उपयोग करती है या नहीं । एक अलग शेल के लिए, यह संदर्भित करता है कि शेल बॉर्न शेल स्क्रिप्ट चला सकता है या नहीं।