बॉर्न शेल
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 यूनिक्स रिलीज़ में जारी किया गया था। हालाँकि इसका उपयोग एक इंटरैक्टिव कमांड दुभाषिया के रूप में किया जाता है, इसका उद्देश्य एक स्क्रिप्टिंग भाषा के रूप में भी था और इसमें अधिकांश विशेषताएं शामिल हैं जिन्हें आमतौर पर संरचित प्रोग्राम बनाने के लिए माना जाता है।
इसे ब्रायन कर्निघन और रोब पाइक द्वारा यूनिक्स प्रोग्रामिंग पर्यावरण के प्रकाशन के साथ लोकप्रियता मिली - पहली व्यावसायिक रूप से प्रकाशित पुस्तक जिसने शेल को एक प्रोग्रामिंग भाषा के रूप में ट्यूटोरियल के रूप में प्रस्तुत किया।
इतिहास
उत्पत्ति
बॉर्न शेल पर काम शुरू में 1976 में शुरू हुआ था।[1] पहली बार संस्करण 7 यूनिक्स में प्रदर्शित हो रहा है,[2] बॉर्न शेल ने PWB शेल का स्थान ले लिया।
शेल के कुछ प्राथमिक लक्ष्य थे:[3]
- खोल स्क्रिप्ट को फ़िल्टर (सॉफ़्टवेयर) के रूप में उपयोग करने की अनुमति देना।
- नियंत्रण प्रवाह और वेरिएबल (कंप्यूटर विज्ञान) सहित प्रोग्रामयोग्यता प्रदान करना।
- सभी इनपुट/आउटपुट फ़ाइल डिस्क्रिप्टर पर नियंत्रण।
- स्क्रिप्ट के भीतर यूनिक्स सिग्नल पर नियंत्रण।
- शेल स्क्रिप्ट की व्याख्या करते समय स्ट्रिंग की लंबाई पर कोई सीमा नहीं।
- स्ट्रिंग उद्धरण तंत्र को तर्कसंगत और सामान्यीकृत करें।
- पर्यावरण चर. इसने संदर्भ को स्टार्टअप पर स्थापित करने की अनुमति दी और शेल स्क्रिप्ट को स्पष्ट पैरामीटर (कंप्यूटर विज्ञान) का उपयोग किए बिना संदर्भ को उप स्क्रिप्ट (प्रक्रिया (कंप्यूटिंग)) में पारित करने का एक तरीका प्रदान किया।
मूल संस्करण की विशेषताएं
संस्करण 7 यूनिक्स बॉर्न शेल की विशेषताओं में शामिल हैं:
- स्क्रिप्ट को उनके फ़ाइल नाम का उपयोग करके कमांड के रूप में लागू किया जा सकता है
- इंटरैक्टिव या गैर-इंटरैक्टिव रूप से उपयोग किया जा सकता है
- कमांड के सिंक्रोनस और एसिंक्रोनस दोनों निष्पादन की अनुमति देता है
- इनपुट और आउटपुट पुनर्निर्देशन और पाइपलाइनों का समर्थन करता है
- अंतर्निहित कमांड का एक सेट प्रदान करता है
- प्रवाह नियंत्रण निर्माण और उद्धरण सुविधाएं प्रदान करता है।
- प्रकारहीन चर
- स्थानीय और वैश्विक परिवर्तनीय दायरा प्रदान करता है
- स्क्रिप्ट को निष्पादन से पहले संकलन की आवश्यकता नहीं होती है
- इसमें गोटो सुविधा नहीं है, इसलिए कोड पुनर्गठन आवश्यक हो सकता है
- बैककोट्स का उपयोग करके कमांड प्रतिस्थापन:
`command`. - यहां दस्तावेज़ों का उपयोग किया जा रहा है
<<किसी स्क्रिप्ट के भीतर इनपुट टेक्स्ट के एक ब्लॉक को एम्बेड करना। for ~ do ~ doneलूप्स, विशेष रूप से का उपयोग$*तर्कों पर लूप करना, साथ हीfor ~ in ~ do ~ doneसूचियों पर पुनरावृत्ति के लिए लूप।case ~ in ~ esacचयन तंत्र, जिसका मुख्य उद्देश्य तर्क विश्लेषण में सहायता करना है।shकीवर्ड पैरामीटर और निर्यात योग्य चर का उपयोग करके पर्यावरण चर के लिए समर्थन प्रदान किया गया।- इसमें इनपुट और आउटपुट को नियंत्रित करने और इसकी नियमित अभिव्यक्ति सुविधाओं के लिए मजबूत प्रावधान शामिल हैं।
बॉर्न शेल फ़ाइल डिस्क्रिप्टर का उपयोग करने की परंपरा को प्रदर्शित करने वाला पहला शेल था 2> त्रुटि संदेशों के लिए, त्रुटि संदेशों को डेटा से अलग रखकर स्क्रिप्टिंग के दौरान बहुत अधिक प्रोग्रामेटिक नियंत्रण की अनुमति देता है।
स्टीफन बॉर्न की कोडिंग शैली ALGOL 68C कंपाइलर के साथ उनके अनुभव से प्रभावित थी[2] जिस पर वह कैम्ब्रिज विश्वविद्यालय में काम कर रहे थे। जिस शैली में कार्यक्रम लिखा गया था उसके अलावा, बॉर्न ने ALGOL 68 के कुछ हिस्सों का पुन: उपयोग किया if ~ then ~ elif ~ then ~ else ~ fi, case ~ in ~ esac और for/while ~ do ~ od(का उपयोग करते हुए done के बजाय od) सामान्य यूनिक्स बॉर्न शेल सिंटैक्स में खंड। इसके अलावा, - हालाँकि v7 शेल C (प्रोग्रामिंग भाषा) में लिखा गया है - बॉर्न ने कुछ मैक्रो (कंप्यूटर विज्ञान) का लाभ उठाया[4] C स्रोत कोड को ALGOL 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) - स्रोत कोड डी-ALGOL68-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 .[citation needed] DMERT शेल दूरसंचार उद्योग में अभी भी उपयोग में आने वाले 3B21D कंप्यूटर पर चलता है।[citation needed]
कोर्न शैल
मूल बॉर्न शैल स्रोत कोड के आधार पर डेविड कोर्न (कंप्यूटर वैज्ञानिक) द्वारा लिखित कोर्न शेल (ksh),[8] बॉर्न शेल और सी शैल के बीच एक मध्य मार्ग था। इसका सिंटैक्स मुख्य रूप से बॉर्न शेल से लिया गया था, जबकि इसकी कार्य नियंत्रण (यूनिक्स) विशेषताएं सी शेल से मिलती जुलती थीं। मूल कॉर्न शेल की कार्यक्षमता (इसके परिचय के वर्ष से ksh88 के रूप में जाना जाता है) का उपयोग POSIX शेल मानक के आधार के रूप में किया गया था। एक नया संस्करण, ksh93, 2000 से खुला स्रोत है और कुछ लिनक्स वितरणों पर इसका उपयोग किया जाता है। ksh88 का एक क्लोन जिसे कोर्न शेल के नाम से जाना जाता है, ओपनबीएसडी में डिफ़ॉल्ट शेल है।
शिली बॉर्न शैल
जोर्ग शिलिंग के शिली-टूल्स में तीन बॉर्न शैल डेरिवेटिव शामिल हैं।[9]
अन्य कोशों से संबंध
सी शैल
सी शेल के लेखक बिल जॉय ने इंटरएक्टिव उपयोग के लिए बॉर्न शेल की आलोचना की,[10] एक ऐसा कार्य जिसके लिए स्टीफन बॉर्न ने स्वयं सी शेल की श्रेष्ठता को स्वीकार किया। हालाँकि, बॉर्न ने कहा कि उसका शेल स्क्रिप्टिंग के लिए बेहतर था और किसी भी यूनिक्स प्रणाली पर उपलब्ध था,[11] और टॉम क्रिस्टियनसेन ने भी सी शेल की स्क्रिप्टिंग और प्रोग्रामिंग के लिए अनुपयुक्त होने की आलोचना की।[12]
अल्मक्विस्ट गोले
बॉर्न शेल से जुड़े कॉपीराइट मुद्दों के कारण, क्योंकि इसका उपयोग ऐतिहासिक कंप्यूटर सिस्टम अनुसंधान समूह बीएसडी रिलीज में किया गया था, केनेथ अल्मक्विस्ट ने बॉर्न शेल का एक क्लोन विकसित किया, जिसे कुछ लोग अल्मक्विस्ट खोल के रूप में जानते हैं और बीएसडी लाइसेंस के तहत उपलब्ध है, जो आज उपयोग में है। कुछ बीएसडी वंशजों पर और कम-याददाश्त स्थितियों में। अल्मक्विस्ट शेल को लिनक्स में पोर्ट किया गया था, और पोर्ट का नाम बदलकर अल्मक्विस्ट शेल या डैश कर दिया गया। यह शेल मानक का तीव्र निष्पादन प्रदान करता है sh (और POSIX-मानक sh, आधुनिक वंशजों में) अपने समकक्ष, बैश की तुलना में छोटी मेमोरी फ़ुटप्रिंट वाली स्क्रिप्ट। इसका उपयोग बैश (यूनिक्स शेल) # पोर्टेबिलिटी - श पर चलने वाली स्क्रिप्ट में बनाई गई बैश-केंद्रित धारणाओं को उजागर करता है।
अन्य गोले
- बैश (यूनिक्स शेल) (बॉर्न-अगेन शेल) को 1989 में जीएनयू के लिए विकसित किया गया था और इसमें बॉर्न शेल, सीएसएच और केएसएच की विशेषताएं शामिल हैं। इसका मतलब POSIX-अनुरूप होना है।
- आर सी को बेल लैब्स में टॉम डफ द्वारा संस्करण 10 यूनिक्स के लिए श के प्रतिस्थापन के रूप में बनाया गया था। यह बेल लैब्स के प्लान 9 के लिए डिफ़ॉल्ट शेल है। इसे यूजर स्पेस से प्लान 9 के हिस्से के रूप में UNIX में पोर्ट किया गया है।
- Z शेल, 1990 में पॉल फालस्टेड द्वारा विकसित, एक विस्तारित बॉर्न शेल है जिसमें बड़ी संख्या में सुधार हुए हैं, जिसमें बैश (यूनिक्स शेल), के शेल और टीसीएसएच की कुछ विशेषताएं शामिल हैं।
उपयोग
बॉर्न शेल एक समय सभी ब्रांडेड यूनिक्स सिस्टम पर मानक था, हालांकि ऐतिहासिक रूप से बीएसडी-आधारित सिस्टम में सी शेल में कई स्क्रिप्ट लिखी गई थीं। POSIX के आधार के रूप में 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 4 May 2014.
- ↑ "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 POSIX 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.