बॉर्न शेल: Difference between revisions
No edit summary |
No edit summary |
||
| Line 25: | Line 25: | ||
}} | }} | ||
बॉर्न शेल | बॉर्न शेल (<code>sh</code>) कंप्यूटर ऑपरेटिंग सिस्टम के लिए एक शेल कमांड-लाइन दुभाषिया है। | ||
बॉर्न शेल संस्करण 7 यूनिक्स के लिए डिफ़ॉल्ट शेल था। यूनिक्स जैसी प्रणालियों में <code>/bin/sh</code> प्रसारित रहता है - जो बॉर्न शेल होगा, या एक संगत शेल के लिए एक प्रतीकात्मक लिंक या हार्ड लिंक होगा - तब भी जब अधिकांश उपयोगकर्ताओं द्वारा अन्य शेल का उपयोग किया जाता है। | |||
इसे [[ब्रायन कर्निघन]] और [[रोब पाइक]] द्वारा [[यूनिक्स प्रोग्रामिंग पर्यावरण]] के प्रकाशन के साथ लोकप्रियता मिली - पहली व्यावसायिक रूप से प्रकाशित पुस्तक जिसने शेल को एक प्रोग्रामिंग भाषा के रूप में ट्यूटोरियल के रूप में प्रस्तुत | [[बेल लैब्स]] में स्टीफन आर. बॉर्न द्वारा विकसित, यह [[ थॉम्पसन शैल |थॉम्पसन शैल]] का प्रतिस्थापन था, जिसकी निष्पादन योग्य फ़ाइल का नाम समान था-<code>sh</code>. इसे 1979 में कॉलेजों और विश्वविद्यालयों को वितरित संस्करण 7 यूनिक्स रिलीज़ में प्रसारित किया गया था। चूँकि इसका उपयोग एक इंटरैक्टिव कमांड दुभाषिया के रूप में किया जाता है, इसका उद्देश्य एक स्क्रिप्टिंग भाषा के रूप में भी था और इसमें अधिकांश विशेषताएं सम्मिलित हैं जिन्हें सामान्यतः संरचित प्रोग्राम बनाने के लिए माना जाता है। | ||
बेल लैब्स में स्टीफन बॉर्न द्वारा विकसित, यह थॉम्पसन शेल का प्रतिस्थापन था, जिसकी निष्पादन योग्य फ़ाइल का एक ही नाम था - श। इसे 1979 में कॉलेजों और विश्वविद्यालयों को वितरित संस्करण 7 यूनिक्स रिलीज़ में प्रसारित किया गया था। चूँकि इसका उपयोग एक इंटरैक्टिव कमांड दुभाषिया के रूप में किया जाता है, इसका उद्देश्य एक स्क्रिप्टिंग भाषा के रूप में भी था और इसमें अधिकांश विशेषताएं सम्मिलित हैं जिन्हें सामान्यतः संरचित प्रोग्राम बनाने के लिए माना जाता है। | |||
इसे [[ब्रायन कर्निघन]] और [[रोब पाइक]] द्वारा [[यूनिक्स प्रोग्रामिंग पर्यावरण]] के प्रकाशन के साथ लोकप्रियता मिली - पहली व्यावसायिक रूप से प्रकाशित पुस्तक जिसने शेल को एक प्रोग्रामिंग भाषा के रूप में ट्यूटोरियल के रूप में प्रस्तुत किया गया था। | |||
==इतिहास== | ==इतिहास== | ||
| Line 38: | Line 41: | ||
===उत्पत्ति=== | ===उत्पत्ति=== | ||
बॉर्न शेल पर काम | बॉर्न शेल पर काम प्रारंभ में 1976 में प्रारंभ हुआ था।<ref>https://www.bsdcan.org/2015/schedule/events/612.en.html Stephen Bourne Keynote for BSDCan 2015</ref> पहली बार संस्करण 7 यूनिक्स में प्रदर्शित हो रहा है,{{r|reader}} बॉर्न शेल ने पीडब्लूबी शेल का स्थान ले लिया था। | ||
शेल के कुछ प्राथमिक लक्ष्य थे:<ref>{{cite web|url=http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh|title=The A-Z of Programming Languages: Bourne shell, or sh|website=computerworld.com.au|access-date=6 March 2009|archive-url=https://web.archive.org/web/20100111203059/http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh|archive-date=11 January 2010|url-status=dead}}</ref> | शेल के कुछ प्राथमिक लक्ष्य थे:<ref>{{cite web|url=http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh|title=The A-Z of Programming Languages: Bourne shell, or sh|website=computerworld.com.au|access-date=6 March 2009|archive-url=https://web.archive.org/web/20100111203059/http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh|archive-date=11 January 2010|url-status=dead}}</ref> | ||
| Line 44: | Line 47: | ||
* नियंत्रण प्रवाह और वेरिएबल (कंप्यूटर विज्ञान) सहित प्रोग्रामयोग्यता प्रदान करना। | * नियंत्रण प्रवाह और वेरिएबल (कंप्यूटर विज्ञान) सहित प्रोग्रामयोग्यता प्रदान करना। | ||
* सभी इनपुट/आउटपुट [[फ़ाइल डिस्क्रिप्टर]] पर नियंत्रण। | * सभी इनपुट/आउटपुट [[फ़ाइल डिस्क्रिप्टर]] पर नियंत्रण। | ||
* स्क्रिप्ट के | * स्क्रिप्ट के अंदर [[यूनिक्स सिग्नल]] पर नियंत्रण। | ||
* शेल स्क्रिप्ट की व्याख्या करते समय स्ट्रिंग की लंबाई पर कोई सीमा नहीं। | * शेल स्क्रिप्ट की व्याख्या करते समय स्ट्रिंग की लंबाई पर कोई सीमा नहीं। | ||
* स्ट्रिंग उद्धरण तंत्र को तर्कसंगत और सामान्यीकृत करें। | * स्ट्रिंग उद्धरण तंत्र को तर्कसंगत और सामान्यीकृत करें। | ||
* पर्यावरण चर. इसने संदर्भ को स्टार्टअप पर स्थापित करने की अनुमति दी और शेल स्क्रिप्ट को स्पष्ट [[पैरामीटर (कंप्यूटर विज्ञान)]] का उपयोग किए बिना संदर्भ को उप स्क्रिप्ट ([[प्रक्रिया (कंप्यूटिंग)]]) में पारित करने का एक | * पर्यावरण चर. इसने संदर्भ को स्टार्टअप पर स्थापित करने की अनुमति दी और शेल स्क्रिप्ट को स्पष्ट [[पैरामीटर (कंप्यूटर विज्ञान)]] का उपयोग किए बिना संदर्भ को उप स्क्रिप्ट ([[प्रक्रिया (कंप्यूटिंग)]]) में पारित करने का एक विधि प्रदान किया गया था। | ||
===मूल संस्करण की विशेषताएं=== | ===मूल संस्करण की विशेषताएं=== | ||
संस्करण 7 यूनिक्स बॉर्न शेल की विशेषताओं में | संस्करण 7 यूनिक्स बॉर्न शेल की विशेषताओं में सम्मिलित हैं: | ||
* स्क्रिप्ट को उनके फ़ाइल नाम का उपयोग करके कमांड के रूप में | * स्क्रिप्ट को उनके फ़ाइल नाम का उपयोग करके कमांड के रूप में प्रयुक्त किया जा सकता है | ||
* इंटरैक्टिव या गैर-इंटरैक्टिव रूप से उपयोग किया जा सकता है | * इंटरैक्टिव या गैर-इंटरैक्टिव रूप से उपयोग किया जा सकता है | ||
* कमांड के सिंक्रोनस और एसिंक्रोनस दोनों निष्पादन की अनुमति देता है | * कमांड के सिंक्रोनस और एसिंक्रोनस दोनों निष्पादन की अनुमति देता है | ||
| Line 59: | Line 62: | ||
* प्रवाह नियंत्रण निर्माण और उद्धरण सुविधाएं प्रदान करता है। | * प्रवाह नियंत्रण निर्माण और उद्धरण सुविधाएं प्रदान करता है। | ||
* प्रकारहीन चर | * प्रकारहीन चर | ||
* स्थानीय और वैश्विक परिवर्तनीय | * स्थानीय और वैश्विक परिवर्तनीय सीमा प्रदान करता है | ||
* स्क्रिप्ट को निष्पादन से पहले संकलन की आवश्यकता नहीं होती है | * स्क्रिप्ट को निष्पादन से पहले संकलन की आवश्यकता नहीं होती है | ||
* इसमें गोटो सुविधा नहीं है, इसलिए कोड पुनर्गठन आवश्यक हो सकता है | * इसमें गोटो सुविधा नहीं है, इसलिए कोड पुनर्गठन आवश्यक हो सकता है | ||
* [[बैककोट्स]] का उपयोग करके कमांड प्रतिस्थापन: <code>`command`</code>. | * [[बैककोट्स]] का उपयोग करके कमांड प्रतिस्थापन: <code>`command`</code>. | ||
* यहां दस्तावेज़ों का उपयोग किया जा रहा है <code><<</code> किसी स्क्रिप्ट के | * यहां दस्तावेज़ों का उपयोग किया जा रहा है <code><<</code> किसी स्क्रिप्ट के अंदर इनपुट टेक्स्ट के एक ब्लॉक को एम्बेड करना। | ||
* <code>for ~ do ~ done</code> लूप्स, विशेष रूप से का उपयोग <code>$*</code> तर्कों पर लूप करना, साथ ही <code>for ~ in ~ do ~ done</code> सूचियों पर पुनरावृत्ति के लिए | *यहां एक स्क्रिप्ट के अंदर इनपुट टेक्स्ट के ब्लॉक को एम्बेड करने के लिए << का उपयोग करने वाले दस्तावेज़ हैं। | ||
*<code>for ~ do ~ done</code> लूप्स, विशेष रूप से का उपयोग <code>$*</code> तर्कों पर लूप करना, साथ ही <code>for ~ in ~ do ~ done</code> सूचियों पर पुनरावृत्ति के लिए लूप का उपयोग किय आजाता है । | |||
* <code>case ~ in ~ esac</code> चयन तंत्र, जिसका मुख्य उद्देश्य [[तर्क विश्लेषण]] में सहायता करना है। | * <code>case ~ in ~ esac</code> चयन तंत्र, जिसका मुख्य उद्देश्य [[तर्क विश्लेषण]] में सहायता करना है। | ||
* <code>sh</code> कीवर्ड पैरामीटर और निर्यात योग्य चर का उपयोग करके पर्यावरण चर के लिए समर्थन प्रदान किया गया। | * <code>sh</code> कीवर्ड पैरामीटर और निर्यात योग्य चर का उपयोग करके पर्यावरण चर के लिए समर्थन प्रदान किया गया। | ||
* इसमें इनपुट और आउटपुट को नियंत्रित करने और इसकी [[नियमित अभिव्यक्ति]] सुविधाओं के लिए | * इसमें इनपुट और आउटपुट को नियंत्रित करने और इसकी [[नियमित अभिव्यक्ति]] सुविधाओं के लिए शसक्त प्रावधान सम्मिलित हैं। | ||
बॉर्न शेल त्रुटि संदेशों के लिए फ़ाइल डिस्क्रिप्टर<code>2></code> का उपयोग करने की परंपरा को प्रदर्शित करने वाला पहला शेल था, जो त्रुटि संदेशों को डेटा से अलग रखकर स्क्रिप्टिंग के समय अधिक प्रोग्रामेटिक नियंत्रण की अनुमति देता था। | |||
बॉर्न | स्टीफन बॉर्न की कोडिंग शैली [[ALGOL 68C|एल्गोल 68C]] कंपाइलर के साथ उनके अनुभव से प्रभावित थी<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=http://www.cs.dartmouth.edu/~doug/reader.pdf |archive-url=https://web.archive.org/web/20140504225225/http://www.cs.dartmouth.edu/~doug/reader.pdf |archive-date=2014-05-04 |url-status=live |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref> जिस पर वह [[कैम्ब्रिज विश्वविद्यालय]] में काम कर रहे थे। जिस शैली में कार्यक्रम लिखा गया था उसके अतिरिक्त , बॉर्न ने [[ALGOL 68|एल्गोल 68]] के कुछ हिस्सों का पुन: उपयोग किया <code>'''if''' ~ '''then''' ~ '''elif''' ~ '''then''' ~ '''else''' ~ '''fi'''</code>, <code>'''case''' ~ '''in''' ~ '''esac'''</code> और <code>'''for'''/'''while''' ~ '''do''' ~ '''od'''</code>(का उपयोग करते हुए <code>done</code> के अतिरिक्त <code>'''od'''</code>) सामान्य [[यूनिक्स]] बॉर्न शेल सिंटैक्स में खंड। इसके अतिरिक्त , - चूँकि v7 शेल C (प्रोग्रामिंग भाषा) में लिखा गया है - बॉर्न ने कुछ [[मैक्रो (कंप्यूटर विज्ञान)]] का लाभ उठाया<ref>{{Cite web| url=http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h|title=mac.h – Macros used by Bourne to structure C like Algol68C |access-date=9 September 2006|author=Bourne, Steve|author-link=Stephen R. Bourne|date= 12 January 1979 |publisher=[[AT&T Corporation]] }}</ref> C स्रोत कोड को एल्गोल 68 फ्लेवर देने के लिए इन मैक्रोज़ (यूनिक्स संस्करण बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन या 4.2बीएसडी '''4.2बीएसडी''' में वितरित [[फिंगर प्रोटोकॉल]] कमांड के साथ) ने इंटरनेशनल ऑबफुसेटेड सी कोड प्रतियोगिता (आईओसीसीसी) को प्रेरित किया जाता है।<ref>{{Cite web|url=http://www.ioccc.org/faq.html|title=The IOCCC FAQ – Q/A: How did the IOCCC get started?| access-date=9 September 2006|author=Landon Curt Noll|author-link=Landon Curt Noll|author2=Simon Cooper|author3=Peter Seebach|author4=Leonid A. Broukhis|name-list-style=amp|year= 2004|publisher=ioccc.org}}</ref> | ||
===1979 के बाद प्रारंभ की गई सुविधाएँ=== | |||
इन वर्षों में, एटी एंड टी में बॉर्न शेल को बढ़ाया गया था। विभिन्न वेरिएंट को संबंधित एटी एंड टी यूनिक्स संस्करण की तरह कहा जाता है, जिसके साथ इसे प्रसारित किया गया था (कुछ महत्वपूर्ण वेरिएंट संस्करण 7, सिस्टम III, एसवीआर 2, एसवीआर 3, एसवीआर 4 हैं)। चूंकि शेल का कभी भी संस्करणीकरण नहीं किया गया था, इसलिए इसकी पहचान करने का एकमात्र विधि इसकी विशेषताओं का परीक्षण करना था।<ref>{{cite web|url=http://www.in-ulm.de/~mascheck/various/whatshell/|title=यह कौन सा खोल है|website=www.in-ulm.de}}</ref> | |||
1979 से बॉर्न शेल संस्करणों की विशेषताओं में सम्मिलित हैं:<ref>{{cite web|url=http://www.in-ulm.de/~mascheck/bourne/|title=traditional Bourne shell family / history and development|website=www.in-ulm.de}}</ref> | |||
1979 से बॉर्न शेल संस्करणों की विशेषताओं में | |||
* अंतर्निर्मित {{code|test}} कमांड - सिस्टम III शेल (1981) | * अंतर्निर्मित {{code|test}} कमांड - सिस्टम III शेल (1981) | ||
* # टिप्पणी चरित्र के रूप में - सिस्टम III शेल (1981) | * # टिप्पणी चरित्र के रूप में - सिस्टम III शेल (1981) | ||
| Line 84: | Line 89: | ||
* कार्य और {{code|return}} बिल्टिन - एसवीआर2 शेल (1984) | * कार्य और {{code|return}} बिल्टिन - एसवीआर2 शेल (1984) | ||
* बिल्ट-इन {{code|unset}}, {{code|echo}}, {{code|type}} - एसवीआर2 शेल (1984) | * बिल्ट-इन {{code|unset}}, {{code|echo}}, {{code|type}} - एसवीआर2 शेल (1984) | ||
* स्रोत कोड डी- | * स्रोत कोड डी-एल्गोल68-ized - SVR2 शेल (1984) | ||
* आधुनिक{{code|$@}} - एसवीआर3 शेल (1986) | * आधुनिक{{code|$@}} - एसवीआर3 शेल (1986) | ||
* अंतर्निर्मित {{code|getopts}} - एसवीआर3 शेल (1986) | * अंतर्निर्मित {{code|getopts}} - एसवीआर3 शेल (1986) | ||
| Line 95: | Line 100: | ||
===[[डीएमईआरटी]] शेल=== | ===[[डीएमईआरटी]] शेल=== | ||
डुप्लेक्स मल्टी-एनवायरमेंट रियल-टाइम (डीएमईआरटी) एक हाइब्रिड टाइम-शेयरिंग/रीयल-टाइम ऑपरेटिंग सिस्टम है जिसे 1970 के दशक में नेपरविले, इलिनोइस में बेल लैब्स इंडियन हिल स्थान पर विकसित किया गया था, जो बॉर्न शेल संस्करण sys137 दिनांक 1978 अक्टूबर 12 22 के 1978 स्नैपशॉट का उपयोग करता है। :39:57 . | डुप्लेक्स मल्टी-एनवायरमेंट रियल-टाइम (डीएमईआरटी) एक हाइब्रिड टाइम-शेयरिंग/रीयल-टाइम ऑपरेटिंग सिस्टम है जिसे 1970 के दशक में नेपरविले, इलिनोइस में बेल लैब्स इंडियन हिल स्थान पर विकसित किया गया था, जो बॉर्न शेल संस्करण sys137 दिनांक 1978 अक्टूबर 12 22 के 1978 स्नैपशॉट का उपयोग करता है। :39:57 . [[डीएमईआरटी]] शेल दूरसंचार उद्योग में अभी भी उपयोग में आने वाले [[3B21D|3बी21डी]] कंप्यूटर पर चलता है। | ||
===कोर्न शैल=== | ===कोर्न शैल=== | ||
[[File:OpenBSD ksh Interaction.png|thumb|[[ओपनबीएसडी]] में [[कॉर्न शेल]] के साथ इंटरेक्शन (डिफ़ॉल्ट शेल)]]मूल बॉर्न शैल स्रोत कोड के आधार पर [[डेविड कोर्न (कंप्यूटर वैज्ञानिक)]] द्वारा लिखित कोर्न शेल ( | [[File:OpenBSD ksh Interaction.png|thumb|[[ओपनबीएसडी]] में [[कॉर्न शेल]] के साथ इंटरेक्शन (डिफ़ॉल्ट शेल)]]मूल बॉर्न शैल स्रोत कोड के आधार पर [[डेविड कोर्न (कंप्यूटर वैज्ञानिक)]] द्वारा लिखित कोर्न शेल (केएसएच),<ref> | ||
{{citation | {{citation | ||
| title = ksh - An Extensible High Level Language | | title = ksh - An Extensible High Level Language | ||
| Line 109: | Line 114: | ||
| quote = Instead of inventing a new script language, we built a form entry system by modifying the Bourne shell, adding built-in commands as necessary. | | quote = Instead of inventing a new script language, we built a form entry system by modifying the Bourne shell, adding built-in commands as necessary. | ||
| access-date = 5 February 2015 | | access-date = 5 February 2015 | ||
}}</ref> बॉर्न शेल और [[ सी शैल |सी शैल]] के बीच एक मध्य मार्ग था। इसका सिंटैक्स मुख्य रूप से बॉर्न शेल से लिया गया था, जबकि इसकी [[ कार्य नियंत्रण (यूनिक्स) |कार्य नियंत्रण (यूनिक्स)]] विशेषताएं सी शेल से मिलती जुलती थीं। मूल कॉर्न शेल की कार्यक्षमता (इसके परिचय के वर्ष से ksh88 के रूप में जाना जाता है) का उपयोग [[POSIX]] शेल मानक के आधार के रूप में किया गया था। एक नया संस्करण, ksh93, 2000 से खुला स्रोत है और कुछ [[लिनक्स वितरण]] | }}</ref> बॉर्न शेल और [[ सी शैल |सी शैल]] के बीच एक मध्य मार्ग था। इसका सिंटैक्स मुख्य रूप से बॉर्न शेल से लिया गया था, जबकि इसकी [[ कार्य नियंत्रण (यूनिक्स) |कार्य नियंत्रण (यूनिक्स)]] विशेषताएं सी शेल से मिलती जुलती थीं। मूल कॉर्न शेल की कार्यक्षमता (इसके परिचय के वर्ष से ksh88 के रूप में जाना जाता है) का उपयोग [[POSIX|पॉज़िक्स]] शेल मानक के आधार के रूप में किया गया था। एक नया संस्करण, ksh93, 2000 से खुला स्रोत है और कुछ [[लिनक्स वितरण]] पर इसका उपयोग किया जाता है। ksh88 का एक क्लोन जिसे कोर्न शेल के नाम से जाना जाता है, ओपनबीएसडी में डिफ़ॉल्ट शेल है। | ||
===शिली बॉर्न शैल=== | ===शिली बॉर्न शैल=== | ||
जोर्ग शिलिंग के शिली-टूल्स में तीन बॉर्न शैल डेरिवेटिव | जोर्ग शिलिंग के शिली-टूल्स में तीन बॉर्न शैल डेरिवेटिव सम्मिलित हैं।<ref>{{cite web |title=Schily Bourne Shell - A modern enhanced and POSIX compliant Bourne Shell source maintained by Jörg Schilling. |url=http://schilytools.sourceforge.net/bosh.html |website=Schily-Tools}}</ref> | ||
| Line 118: | Line 123: | ||
===सी शैल=== | ===सी शैल=== | ||
सी शेल के लेखक [[बिल जॉय]] ने इंटरएक्टिव उपयोग के लिए बॉर्न शेल की आलोचना की | सी शेल के लेखक [[बिल जॉय]] ने इंटरएक्टिव उपयोग के लिए बॉर्न शेल की आलोचना की जाती है<ref>[http://www.kitebird.com/csh-tcsh-book/csh-intro.pdf ''An Introduction to the C shell''] {{Webarchive|url=https://web.archive.org/web/20180713012111/http://www.kitebird.com/csh-tcsh-book/csh-intro.pdf |date=13 July 2018 }} by [[Bill Joy]].{{Page needed|date=July 2017}}</ref> एक ऐसा कार्य जिसके लिए स्टीफन बॉर्न ने स्वयं सी शेल की श्रेष्ठता को स्वीकार किया। चूँकि बॉर्न ने कहा कि उसका शेल स्क्रिप्टिंग के लिए उत्तम था और किसी भी यूनिक्स प्रणाली पर उपलब्ध था,<ref name="bourne198310">{{cite news | url=https://archive.org/stream/byte-magazine-1983-10/1983_10_BYTE_08-10_UNIX#page/n187/mode/2up | title=यूनिक्स शैल| work=BYTE | date=October 1983 | access-date=30 January 2015 | author=Bourne, Stephen R. | pages=187}}</ref> और [[टॉम क्रिस्टियनसेन]] ने भी सी शेल की स्क्रिप्टिंग और प्रोग्रामिंग के लिए अनुपयुक्त होने की आलोचना की गई थी।<ref>{{cite web|url=http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/|title=सीएसएच प्रोग्रामिंग को हानिकारक माना जाता है|author=Tom Christiansen|date=28 September 1995|access-date=17 February 2014}}</ref> | ||
===अल्मक्विस्ट गोले=== | ===अल्मक्विस्ट गोले=== | ||
बॉर्न शेल से जुड़े कॉपीराइट | बॉर्न शेल से जुड़े कॉपीराइट उद्देश्यों के कारण, क्योंकि इसका उपयोग ऐतिहासिक [[ कंप्यूटर सिस्टम अनुसंधान समूह |कंप्यूटर सिस्टम अनुसंधान समूह]] बीएसडी रिलीज में किया गया था, केनेथ अल्मक्विस्ट ने बॉर्न शेल का एक क्लोन विकसित किया था जिसे कुछ लोग [[अल्मक्विस्ट खोल]] के रूप में जानते हैं और [[बीएसडी लाइसेंस]] के तहत उपलब्ध है, जो आज उपयोग में है। कुछ बीएसडी वंशजों पर और कम-याददाश्त स्थितियों में अल्मक्विस्ट शेल को लिनक्स में पोर्ट किया गया था, और पोर्ट का नाम बदलकर अल्मक्विस्ट शेल या डैश कर दिया गया। यह शेल मानक का तीव्र निष्पादन प्रदान करता है <code>sh</code> (और [[POSIX|पॉज़िक्स]]-मानक <code>sh</code>, आधुनिक वंशजों में) अपने समकक्ष, बैश की तुलना में छोटी मेमोरी फ़ुटप्रिंट वाली स्क्रिप्ट। इसका उपयोग बैश (यूनिक्स शेल) या पोर्टेबिलिटी - श पर चलने वाली स्क्रिप्ट में बनाई गई बैश-केंद्रित धारणाओं को उजागर करता है। | ||
===अन्य गोले=== | ===अन्य गोले=== | ||
* [[बैश (यूनिक्स शेल)]] (बॉर्न-अगेन शेल) को 1989 में [[जीएनयू]] के लिए विकसित किया गया था और इसमें बॉर्न शेल, सीएसएच और केएसएच की विशेषताएं | * [[बैश (यूनिक्स शेल)]] (बॉर्न-अगेन शेल) को 1989 में [[जीएनयू]] के लिए विकसित किया गया था और इसमें बॉर्न शेल, सीएसएच और केएसएच की विशेषताएं सम्मिलित हैं। इसका मतलब पॉज़िक्स-अनुरूप होना है। | ||
* [[ आर सी | आर सी]] को बेल लैब्स में [[टॉम डफ]] द्वारा [[संस्करण 10 यूनिक्स]] के लिए | * [[ आर सी | आर सी]] को बेल लैब्स में [[टॉम डफ]] द्वारा [[संस्करण 10 यूनिक्स]] के लिए sh के प्रतिस्थापन के रूप में बनाया गया था। यह बेल लैब्स के प्लान 9 के लिए डिफ़ॉल्ट शेल है। इसे यूजर स्पेस से प्लान 9 के भाग के रूप में [[संस्करण 10 यूनिक्स|यूनिक्स]] में पोर्ट किया गया है। | ||
* Z शेल, 1990 में पॉल फालस्टेड द्वारा विकसित | * Z शेल, 1990 में पॉल फालस्टेड द्वारा विकसित एक विस्तारित बॉर्न शेल है जिसमें बड़ी संख्या में सुधार हुए हैं, जिसमें बैश (यूनिक्स शेल), [[के शेल]] और [[टी]]सीएसएच की कुछ विशेषताएं सम्मिलित हैं। | ||
== उपयोग == | == उपयोग == | ||
बॉर्न शेल एक समय सभी ब्रांडेड यूनिक्स सिस्टम पर मानक था, | बॉर्न शेल एक समय सभी ब्रांडेड यूनिक्स सिस्टम पर मानक था, चूँकि ऐतिहासिक रूप से [[बीएसडी]]-आधारित सिस्टम में सी शेल में कई स्क्रिप्ट लिखी गई थीं। पॉज़िक्स के आधार के रूप में <code>sh</code> सिंटैक्स, बॉर्न शेल स्क्रिप्ट को सामान्यतः [[लिनक्स]] या अन्य यूनिक्स जैसी प्रणालियों पर बैश (यूनिक्स शेल) या [[डेबियन अल्मक्विस्ट शेल]] के साथ चलाया जा सकता है। | ||
== यह भी देखें == | == यह भी देखें == | ||
| Line 148: | Line 153: | ||
* [http://steve-parker.org/sh/bourne.shtml Original Bourne Shell documentation from 1978] | * [http://steve-parker.org/sh/bourne.shtml Original Bourne Shell documentation from 1978] | ||
* [http://heirloom.sourceforge.net/sh.html A port of the "heirloom" SVR4 Bourne shell from OpenSolaris to some other Unix-like systems] | * [http://heirloom.sourceforge.net/sh.html A port of the "heirloom" SVR4 Bourne shell from OpenSolaris to some other Unix-like systems] | ||
* [https://web.archive.org/web/20191030202653/http://www.unix.org/whitepapers/shdiffs.html Migrating from the System V (SVR4) Shell to the | * [https://web.archive.org/web/20191030202653/http://www.unix.org/whitepapers/shdiffs.html Migrating from the System V (SVR4) Shell to the पॉज़िक्स Shell] | ||
* [http://www.grymoire.com/Unix/Sh.html Bourne Shell Tutorial (syntax)] | * [http://www.grymoire.com/Unix/Sh.html Bourne Shell Tutorial (syntax)] | ||
* [http://www.faqs.org/faqs/unix-faq/shell/shell-differences/ Faqs shell differences] | * [http://www.faqs.org/faqs/unix-faq/shell/shell-differences/ Faqs shell differences] | ||
Revision as of 11:37, 5 July 2023
| File:Version 7 UNIX SIMH PDP11 Kernels Shell.png Bourne shell interaction on Version 7 Unix | |
| Original author(s) | Stephen Bourne |
|---|---|
| Developer(s) | Bell Telephone Laboratories |
| Initial release | 1979 |
| Operating system | Unix |
| Type | Unix shell |
| License | [under discussion] |
बॉर्न शेल (sh) कंप्यूटर ऑपरेटिंग सिस्टम के लिए एक शेल कमांड-लाइन दुभाषिया है।
बॉर्न शेल संस्करण 7 यूनिक्स के लिए डिफ़ॉल्ट शेल था। यूनिक्स जैसी प्रणालियों में /bin/sh प्रसारित रहता है - जो बॉर्न शेल होगा, या एक संगत शेल के लिए एक प्रतीकात्मक लिंक या हार्ड लिंक होगा - तब भी जब अधिकांश उपयोगकर्ताओं द्वारा अन्य शेल का उपयोग किया जाता है।
बेल लैब्स में स्टीफन आर. बॉर्न द्वारा विकसित, यह थॉम्पसन शैल का प्रतिस्थापन था, जिसकी निष्पादन योग्य फ़ाइल का नाम समान था-sh. इसे 1979 में कॉलेजों और विश्वविद्यालयों को वितरित संस्करण 7 यूनिक्स रिलीज़ में प्रसारित किया गया था। चूँकि इसका उपयोग एक इंटरैक्टिव कमांड दुभाषिया के रूप में किया जाता है, इसका उद्देश्य एक स्क्रिप्टिंग भाषा के रूप में भी था और इसमें अधिकांश विशेषताएं सम्मिलित हैं जिन्हें सामान्यतः संरचित प्रोग्राम बनाने के लिए माना जाता है।
बेल लैब्स में स्टीफन बॉर्न द्वारा विकसित, यह थॉम्पसन शेल का प्रतिस्थापन था, जिसकी निष्पादन योग्य फ़ाइल का एक ही नाम था - श। इसे 1979 में कॉलेजों और विश्वविद्यालयों को वितरित संस्करण 7 यूनिक्स रिलीज़ में प्रसारित किया गया था। चूँकि इसका उपयोग एक इंटरैक्टिव कमांड दुभाषिया के रूप में किया जाता है, इसका उद्देश्य एक स्क्रिप्टिंग भाषा के रूप में भी था और इसमें अधिकांश विशेषताएं सम्मिलित हैं जिन्हें सामान्यतः संरचित प्रोग्राम बनाने के लिए माना जाता है।
इसे ब्रायन कर्निघन और रोब पाइक द्वारा यूनिक्स प्रोग्रामिंग पर्यावरण के प्रकाशन के साथ लोकप्रियता मिली - पहली व्यावसायिक रूप से प्रकाशित पुस्तक जिसने शेल को एक प्रोग्रामिंग भाषा के रूप में ट्यूटोरियल के रूप में प्रस्तुत किया गया था।
इतिहास
उत्पत्ति
बॉर्न शेल पर काम प्रारंभ में 1976 में प्रारंभ हुआ था।[1] पहली बार संस्करण 7 यूनिक्स में प्रदर्शित हो रहा है,[2] बॉर्न शेल ने पीडब्लूबी शेल का स्थान ले लिया था।
शेल के कुछ प्राथमिक लक्ष्य थे:[3]
- खोल स्क्रिप्ट को फ़िल्टर (सॉफ़्टवेयर) के रूप में उपयोग करने की अनुमति देना।
- नियंत्रण प्रवाह और वेरिएबल (कंप्यूटर विज्ञान) सहित प्रोग्रामयोग्यता प्रदान करना।
- सभी इनपुट/आउटपुट फ़ाइल डिस्क्रिप्टर पर नियंत्रण।
- स्क्रिप्ट के अंदर यूनिक्स सिग्नल पर नियंत्रण।
- शेल स्क्रिप्ट की व्याख्या करते समय स्ट्रिंग की लंबाई पर कोई सीमा नहीं।
- स्ट्रिंग उद्धरण तंत्र को तर्कसंगत और सामान्यीकृत करें।
- पर्यावरण चर. इसने संदर्भ को स्टार्टअप पर स्थापित करने की अनुमति दी और शेल स्क्रिप्ट को स्पष्ट पैरामीटर (कंप्यूटर विज्ञान) का उपयोग किए बिना संदर्भ को उप स्क्रिप्ट (प्रक्रिया (कंप्यूटिंग)) में पारित करने का एक विधि प्रदान किया गया था।
मूल संस्करण की विशेषताएं
संस्करण 7 यूनिक्स बॉर्न शेल की विशेषताओं में सम्मिलित हैं:
- स्क्रिप्ट को उनके फ़ाइल नाम का उपयोग करके कमांड के रूप में प्रयुक्त किया जा सकता है
- इंटरैक्टिव या गैर-इंटरैक्टिव रूप से उपयोग किया जा सकता है
- कमांड के सिंक्रोनस और एसिंक्रोनस दोनों निष्पादन की अनुमति देता है
- इनपुट और आउटपुट पुनर्निर्देशन और पाइपलाइनों का समर्थन करता है
- अंतर्निहित कमांड का एक सेट प्रदान करता है
- प्रवाह नियंत्रण निर्माण और उद्धरण सुविधाएं प्रदान करता है।
- प्रकारहीन चर
- स्थानीय और वैश्विक परिवर्तनीय सीमा प्रदान करता है
- स्क्रिप्ट को निष्पादन से पहले संकलन की आवश्यकता नहीं होती है
- इसमें गोटो सुविधा नहीं है, इसलिए कोड पुनर्गठन आवश्यक हो सकता है
- बैककोट्स का उपयोग करके कमांड प्रतिस्थापन:
`command`. - यहां दस्तावेज़ों का उपयोग किया जा रहा है
<<किसी स्क्रिप्ट के अंदर इनपुट टेक्स्ट के एक ब्लॉक को एम्बेड करना। - यहां एक स्क्रिप्ट के अंदर इनपुट टेक्स्ट के ब्लॉक को एम्बेड करने के लिए << का उपयोग करने वाले दस्तावेज़ हैं।
for ~ do ~ doneलूप्स, विशेष रूप से का उपयोग$*तर्कों पर लूप करना, साथ हीfor ~ in ~ do ~ doneसूचियों पर पुनरावृत्ति के लिए लूप का उपयोग किय आजाता है ।case ~ in ~ esacचयन तंत्र, जिसका मुख्य उद्देश्य तर्क विश्लेषण में सहायता करना है।shकीवर्ड पैरामीटर और निर्यात योग्य चर का उपयोग करके पर्यावरण चर के लिए समर्थन प्रदान किया गया।- इसमें इनपुट और आउटपुट को नियंत्रित करने और इसकी नियमित अभिव्यक्ति सुविधाओं के लिए शसक्त प्रावधान सम्मिलित हैं।
बॉर्न शेल त्रुटि संदेशों के लिए फ़ाइल डिस्क्रिप्टर2> का उपयोग करने की परंपरा को प्रदर्शित करने वाला पहला शेल था, जो त्रुटि संदेशों को डेटा से अलग रखकर स्क्रिप्टिंग के समय अधिक प्रोग्रामेटिक नियंत्रण की अनुमति देता था।
स्टीफन बॉर्न की कोडिंग शैली एल्गोल 68C कंपाइलर के साथ उनके अनुभव से प्रभावित थी[2] जिस पर वह कैम्ब्रिज विश्वविद्यालय में काम कर रहे थे। जिस शैली में कार्यक्रम लिखा गया था उसके अतिरिक्त , बॉर्न ने एल्गोल 68 के कुछ हिस्सों का पुन: उपयोग किया if ~ then ~ elif ~ then ~ else ~ fi, case ~ in ~ esac और for/while ~ do ~ od(का उपयोग करते हुए done के अतिरिक्त od) सामान्य यूनिक्स बॉर्न शेल सिंटैक्स में खंड। इसके अतिरिक्त , - चूँकि v7 शेल C (प्रोग्रामिंग भाषा) में लिखा गया है - बॉर्न ने कुछ मैक्रो (कंप्यूटर विज्ञान) का लाभ उठाया[4] C स्रोत कोड को एल्गोल 68 फ्लेवर देने के लिए इन मैक्रोज़ (यूनिक्स संस्करण बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन या 4.2बीएसडी 4.2बीएसडी में वितरित फिंगर प्रोटोकॉल कमांड के साथ) ने इंटरनेशनल ऑबफुसेटेड सी कोड प्रतियोगिता (आईओसीसीसी) को प्रेरित किया जाता है।[5]
1979 के बाद प्रारंभ की गई सुविधाएँ
इन वर्षों में, एटी एंड टी में बॉर्न शेल को बढ़ाया गया था। विभिन्न वेरिएंट को संबंधित एटी एंड टी यूनिक्स संस्करण की तरह कहा जाता है, जिसके साथ इसे प्रसारित किया गया था (कुछ महत्वपूर्ण वेरिएंट संस्करण 7, सिस्टम III, एसवीआर 2, एसवीआर 3, एसवीआर 4 हैं)। चूंकि शेल का कभी भी संस्करणीकरण नहीं किया गया था, इसलिए इसकी पहचान करने का एकमात्र विधि इसकी विशेषताओं का परीक्षण करना था।[6]
1979 से बॉर्न शेल संस्करणों की विशेषताओं में सम्मिलित हैं:[7]
- अंतर्निर्मित
testकमांड - सिस्टम III शेल (1981) - # टिप्पणी चरित्र के रूप में - सिस्टम III शेल (1981)
- पैरामीटर प्रतिस्थापन में कोलन ${पैरामीटर:=शब्द} - सिस्टम III शेल (1981)
continueतर्क के साथ - सिस्टम III शेल (1981)cat <<-EOFयहां इंडेंट किए गए दस्तावेज़ों के लिए - सिस्टम III शेल (1981)- कार्य और
returnबिल्टिन - एसवीआर2 शेल (1984) - बिल्ट-इन
unset,echo,type- एसवीआर2 शेल (1984) - स्रोत कोड डी-एल्गोल68-ized - SVR2 शेल (1984)
- आधुनिक
$@- एसवीआर3 शेल (1986) - अंतर्निर्मित
getopts- एसवीआर3 शेल (1986) - साफ़ किए गए पैरामीटर हैंडलिंग से पुनरावर्ती कॉल करने योग्य फ़ंक्शंस की अनुमति मिलती है - SVR3 शेल (1986)
- 8-बिट क्लीन - SVR3 शेल (1986)
- कार्य नियंत्रण - एसवीआर4 शेल (1989)
- मल्टी-बाइट समर्थन - SVR4 शेल (1989)
वेरिएंट
डीएमईआरटी शेल
डुप्लेक्स मल्टी-एनवायरमेंट रियल-टाइम (डीएमईआरटी) एक हाइब्रिड टाइम-शेयरिंग/रीयल-टाइम ऑपरेटिंग सिस्टम है जिसे 1970 के दशक में नेपरविले, इलिनोइस में बेल लैब्स इंडियन हिल स्थान पर विकसित किया गया था, जो बॉर्न शेल संस्करण sys137 दिनांक 1978 अक्टूबर 12 22 के 1978 स्नैपशॉट का उपयोग करता है। :39:57 . डीएमईआरटी शेल दूरसंचार उद्योग में अभी भी उपयोग में आने वाले 3बी21डी कंप्यूटर पर चलता है।
कोर्न शैल
मूल बॉर्न शैल स्रोत कोड के आधार पर डेविड कोर्न (कंप्यूटर वैज्ञानिक) द्वारा लिखित कोर्न शेल (केएसएच),[8] बॉर्न शेल और सी शैल के बीच एक मध्य मार्ग था। इसका सिंटैक्स मुख्य रूप से बॉर्न शेल से लिया गया था, जबकि इसकी कार्य नियंत्रण (यूनिक्स) विशेषताएं सी शेल से मिलती जुलती थीं। मूल कॉर्न शेल की कार्यक्षमता (इसके परिचय के वर्ष से ksh88 के रूप में जाना जाता है) का उपयोग पॉज़िक्स शेल मानक के आधार के रूप में किया गया था। एक नया संस्करण, ksh93, 2000 से खुला स्रोत है और कुछ लिनक्स वितरण पर इसका उपयोग किया जाता है। ksh88 का एक क्लोन जिसे कोर्न शेल के नाम से जाना जाता है, ओपनबीएसडी में डिफ़ॉल्ट शेल है।
शिली बॉर्न शैल
जोर्ग शिलिंग के शिली-टूल्स में तीन बॉर्न शैल डेरिवेटिव सम्मिलित हैं।[9]
अन्य कोशों से संबंध
सी शैल
सी शेल के लेखक बिल जॉय ने इंटरएक्टिव उपयोग के लिए बॉर्न शेल की आलोचना की जाती है[10] एक ऐसा कार्य जिसके लिए स्टीफन बॉर्न ने स्वयं सी शेल की श्रेष्ठता को स्वीकार किया। चूँकि बॉर्न ने कहा कि उसका शेल स्क्रिप्टिंग के लिए उत्तम था और किसी भी यूनिक्स प्रणाली पर उपलब्ध था,[11] और टॉम क्रिस्टियनसेन ने भी सी शेल की स्क्रिप्टिंग और प्रोग्रामिंग के लिए अनुपयुक्त होने की आलोचना की गई थी।[12]
अल्मक्विस्ट गोले
बॉर्न शेल से जुड़े कॉपीराइट उद्देश्यों के कारण, क्योंकि इसका उपयोग ऐतिहासिक कंप्यूटर सिस्टम अनुसंधान समूह बीएसडी रिलीज में किया गया था, केनेथ अल्मक्विस्ट ने बॉर्न शेल का एक क्लोन विकसित किया था जिसे कुछ लोग अल्मक्विस्ट खोल के रूप में जानते हैं और बीएसडी लाइसेंस के तहत उपलब्ध है, जो आज उपयोग में है। कुछ बीएसडी वंशजों पर और कम-याददाश्त स्थितियों में अल्मक्विस्ट शेल को लिनक्स में पोर्ट किया गया था, और पोर्ट का नाम बदलकर अल्मक्विस्ट शेल या डैश कर दिया गया। यह शेल मानक का तीव्र निष्पादन प्रदान करता है sh (और पॉज़िक्स-मानक sh, आधुनिक वंशजों में) अपने समकक्ष, बैश की तुलना में छोटी मेमोरी फ़ुटप्रिंट वाली स्क्रिप्ट। इसका उपयोग बैश (यूनिक्स शेल) या पोर्टेबिलिटी - श पर चलने वाली स्क्रिप्ट में बनाई गई बैश-केंद्रित धारणाओं को उजागर करता है।
अन्य गोले
- बैश (यूनिक्स शेल) (बॉर्न-अगेन शेल) को 1989 में जीएनयू के लिए विकसित किया गया था और इसमें बॉर्न शेल, सीएसएच और केएसएच की विशेषताएं सम्मिलित हैं। इसका मतलब पॉज़िक्स-अनुरूप होना है।
- आर सी को बेल लैब्स में टॉम डफ द्वारा संस्करण 10 यूनिक्स के लिए sh के प्रतिस्थापन के रूप में बनाया गया था। यह बेल लैब्स के प्लान 9 के लिए डिफ़ॉल्ट शेल है। इसे यूजर स्पेस से प्लान 9 के भाग के रूप में यूनिक्स में पोर्ट किया गया है।
- Z शेल, 1990 में पॉल फालस्टेड द्वारा विकसित एक विस्तारित बॉर्न शेल है जिसमें बड़ी संख्या में सुधार हुए हैं, जिसमें बैश (यूनिक्स शेल), के शेल और टीसीएसएच की कुछ विशेषताएं सम्मिलित हैं।
उपयोग
बॉर्न शेल एक समय सभी ब्रांडेड यूनिक्स सिस्टम पर मानक था, चूँकि ऐतिहासिक रूप से बीएसडी-आधारित सिस्टम में सी शेल में कई स्क्रिप्ट लिखी गई थीं। पॉज़िक्स के आधार के रूप में sh सिंटैक्स, बॉर्न शेल स्क्रिप्ट को सामान्यतः लिनक्स या अन्य यूनिक्स जैसी प्रणालियों पर बैश (यूनिक्स शेल) या डेबियन अल्मक्विस्ट शेल के साथ चलाया जा सकता है।
यह भी देखें
- कमांड शेल की तुलना
- यूनिक्स शैल
संदर्भ
- ↑ https://www.bsdcan.org/2015/schedule/events/612.en.html Stephen Bourne Keynote for BSDCan 2015
- ↑ 2.0 2.1 McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139. Archived (PDF) from the original on 2014-05-04.
- ↑ "The A-Z of Programming Languages: Bourne shell, or sh". computerworld.com.au. Archived from the original on 11 January 2010. Retrieved 6 March 2009.
- ↑ Bourne, Steve (12 January 1979). "mac.h – Macros used by Bourne to structure C like Algol68C". AT&T Corporation. Retrieved 9 September 2006.
- ↑ Landon Curt Noll; Simon Cooper; Peter Seebach & Leonid A. Broukhis (2004). "The IOCCC FAQ – Q/A: How did the IOCCC get started?". ioccc.org. Retrieved 9 September 2006.
- ↑ "यह कौन सा खोल है". www.in-ulm.de.
- ↑ "traditional Bourne shell family / history and development". www.in-ulm.de.
- ↑
Korn, David G. (26 October 1994), "ksh - An Extensible High Level Language", Proceedings of the USENIX 1994 Very High Level Languages Symposium, USENIX Association, retrieved 5 February 2015,
Instead of inventing a new script language, we built a form entry system by modifying the Bourne shell, adding built-in commands as necessary.
- ↑ "Schily Bourne Shell - A modern enhanced and POSIX compliant Bourne Shell source maintained by Jörg Schilling". Schily-Tools.
- ↑ An Introduction to the C shell Archived 13 July 2018 at the Wayback Machine by Bill Joy.[page needed]
- ↑ Bourne, Stephen R. (October 1983). "यूनिक्स शैल". BYTE. p. 187. Retrieved 30 January 2015.
- ↑ Tom Christiansen (28 September 1995). "सीएसएच प्रोग्रामिंग को हानिकारक माना जाता है". Retrieved 17 February 2014.
बाहरी संबंध
- The individual members of "The Traditional Bourne Shell Family"
- "Characteristical common properties of the traditional Bourne shells"
- Historical C source code for the Bourne shell using mac.h macros from 1979
- Original Bourne Shell documentation from 1978
- A port of the "heirloom" SVR4 Bourne shell from OpenSolaris to some other Unix-like systems
- Migrating from the System V (SVR4) Shell to the पॉज़िक्स Shell
- Bourne Shell Tutorial (syntax)
- Faqs shell differences
- Howard Dahdah, The A–Z of Programming Languages: Bourne shell, or sh – An in-depth interview with Steve Bourne, creator of the Bourne shell, or sh, Computerworld, 5 March 2009.