सिसडमिन प्रकार की भूमिका में किसी के लिए भी शेल स्क्रिप्टिंग एक आवश्यक अनुशासन है, और प्रमुख शेल जिसमें आज लोग स्क्रिप्ट लिखते हैं वह बैश है। बैश लगभग सभी लिनक्स वितरण और आधुनिक मैकोज़ संस्करणों पर डिफ़ॉल्ट रूप से आता है और जल्द ही विंडोज टर्मिनल का मूल हिस्सा बनने के लिए तैयार है। बैश, आप कह सकते हैं, हर जगह है।
तो यह इस मुकाम तक कैसे पहुंचा? इस सप्ताह के कमांड लाइन हीरोज पॉडकास्ट ने कोड लिखने वाले लोगों से पूछकर उस प्रश्न में गहराई से गोता लगाया।
यह यूनिक्स के साथ शुरू हुआ
सभी प्रोग्रामिंग चीजों की तरह, हमें यूनिक्स पर वापस जाना होगा। थोड़ा खोल इतिहास:1971 में, केन थॉम्पसन ने पहला यूनिक्स शेल-थॉम्पसन शेल जारी किया। लेकिन स्क्रिप्टिंग उपयोगकर्ताओं की मात्रा की गंभीर सीमाएँ थीं। और इसका मतलब था कि स्वचालन के लिए गंभीर सीमाएं और, परिणामस्वरूप, आईटी संचालन के पूरे क्षेत्र के लिए।
शोध का यह शानदार अंश स्क्रिप्टिंग के शुरुआती प्रयासों की चुनौतियों को रेखांकित करता है (आदेशों को हाइलाइट करने के लिए बोल्ड जोड़ा गया):
<ब्लॉकक्वॉट>Multics में अपने पूर्ववर्ती के समान, यह शेल (/bin/sh ) एक स्वतंत्र उपयोक्ता कार्यक्रम था जिसे कर्नेल के बाहर क्रियान्वित किया गया था। ग्लोबिंग जैसी अवधारणाएं (पैरामीटर विस्तार के लिए पैटर्न मिलान, जैसे *.txt ) को glob . नामक एक अलग उपयोगिता में लागू किया गया था , जैसा कि if . था सशर्त अभिव्यक्तियों का मूल्यांकन करने के लिए आदेश। इस पृथक्करण ने सी स्रोत की 900 पंक्तियों के नीचे, खोल को छोटा रखा।
शेल ने पुनर्निर्देशन के लिए एक कॉम्पैक्ट सिंटैक्स पेश किया (<> और >> ) और पाइपिंग (| या ^ ) जो आधुनिक गोले में बच गया है। आप अनुक्रमिक आदेशों को लागू करने के लिए समर्थन भी पा सकते हैं (; . के साथ) ) और एसिंक्रोनस कमांड (& . के साथ) )।
थॉम्पसन शेल में जो कमी थी वह थी स्क्रिप्ट की क्षमता। इसका एकमात्र उद्देश्य कमांड को लागू करने और परिणाम देखने के लिए एक इंटरैक्टिव शेल (कमांड दुभाषिया) के रूप में था।
जैसे-जैसे टर्मिनलों तक पहुंच बढ़ती गई, इसके साथ-साथ ऑटोमेशन में रुचि बढ़ती गई।
बॉर्न शेल एक कदम आगे है
थॉम्पसन की रिहाई के छह साल बाद, 1977 में, स्टीफन बॉर्न ने बॉर्न शेल जारी किया, जिसका उद्देश्य थॉम्पसन शेल की स्क्रिप्टिंग सीमाओं को हल करना था। (चेत रमी, 1990 के बाद से बैश भाषा के प्राथमिक अनुरक्षक, कमांड-लाइन हीरोज के इस एपिसोड में इसकी चर्चा करते हैं)। यह यूनिक्स प्रणाली के हिस्से के रूप में बेल लैब्स से निकलने वाली प्रौद्योगिकी का प्राकृतिक विकास था।
बॉर्न अलग तरीके से क्या करने का इरादा रखता था? शोधकर्ता एम. जोन्स इसे अच्छी तरह से रेखांकित करते हैं:
<ब्लॉकक्वॉट>बॉर्न शेल के दो प्राथमिक लक्ष्य थे:ऑपरेटिंग सिस्टम और स्क्रिप्टिंग के लिए अंतःक्रियात्मक रूप से कमांड निष्पादित करने के लिए कमांड दुभाषिया के रूप में कार्य करना (पुन:प्रयोज्य स्क्रिप्ट लिखना जिसे शेल के माध्यम से लागू किया जा सकता है)। थॉम्पसन शेल को बदलने के अलावा, बॉर्न शेल ने अपने पूर्ववर्तियों पर कई फायदे पेश किए। बॉर्न ने स्क्रिप्ट में नियंत्रण प्रवाह, लूप और चर पेश किए, जो ऑपरेटिंग सिस्टम (दोनों अंतःक्रियात्मक और गैर-अंतःक्रियात्मक रूप से) के साथ बातचीत करने के लिए एक अधिक कार्यात्मक भाषा प्रदान करते हैं। शेल ने आपको फिल्टर के रूप में शेल स्क्रिप्ट का उपयोग करने की अनुमति दी, संकेतों को संभालने के लिए एकीकृत समर्थन प्रदान किया, लेकिन कार्यों को परिभाषित करने की क्षमता का अभाव था। अंत में, इसमें कई विशेषताएं शामिल हैं जिनका हम आज उपयोग करते हैं, जिसमें कमांड प्रतिस्थापन (बैक कोट्स का उपयोग करके) और यहां एक स्क्रिप्ट के भीतर संरक्षित स्ट्रिंग अक्षर को एम्बेड करने के लिए दस्तावेज़ शामिल हैं।
बॉर्न ने पिछले साक्षात्कार में इसका वर्णन इस प्रकार किया था:
<ब्लॉकक्वॉट>मूल खोल वास्तव में एक भाषा नहीं थी; यह एक रिकॉर्डिंग थी - एक फ़ाइल से कमांड के रैखिक अनुक्रम को निष्पादित करने का एक तरीका, एकमात्र नियंत्रण प्रवाह आदिम GOTO एक लेबल है। केन थॉम्पसन द्वारा लिखे गए मूल शेल की ये सीमाएँ महत्वपूर्ण थीं। उदाहरण के लिए, आप आसानी से फ़िल्टर के रूप में कमांड स्क्रिप्ट का उपयोग नहीं कर सकते क्योंकि कमांड फ़ाइल ही मानक इनपुट थी। और एक फ़िल्टर में, मानक इनपुट वह है जो आप अपनी मूल प्रक्रिया से प्राप्त करते हैं, कमांड फ़ाइल से नहीं।
मूल खोल सरल था लेकिन, जैसे-जैसे लोगों ने अनुप्रयोग विकास और स्क्रिप्टिंग के लिए यूनिक्स का उपयोग करना शुरू किया, यह बहुत सीमित था। इसमें चर नहीं थे, इसका नियंत्रण प्रवाह नहीं था, और इसमें बहुत ही अपर्याप्त उद्धरण क्षमताएं थीं।
यह नया शेल स्क्रिप्टर्स के लिए एक बहुत बड़ा कदम था, लेकिन केवल तभी जब आपके पास इसकी पहुंच हो।
बॉर्न के शेल को निःशुल्क सॉफ़्टवेयर के रूप में पुनर्विचार करना
उस समय तक, प्रमुख शेल मालिकाना सॉफ़्टवेयर थे जो बेल लैब्स के स्वामित्व और संचालन में थे। यदि आप बहुत भाग्यशाली थे, तो आपके विश्वविद्यालय के पास यूनिक्स शेल तक पहुंच हो सकती है। लेकिन वह प्रतिबंधित पहुंच उस दुनिया से बहुत दूर थी जिसे फ्री सॉफ्टवेयर फाउंडेशन (एफएसएफ) हासिल करना चाहता था।
रिचर्ड स्टॉलमैन और समान विचारधारा वाले डेवलपर्स का एक समूह यूनिक्स की सभी सुविधाओं को एक लाइसेंस के साथ लिख रहा था जो कि जीएनयू लाइसेंस के तहत स्वतंत्र रूप से उपलब्ध है। उन डेवलपर्स में से एक को शेल बनाने का काम सौंपा गया था। वह डेवलपर ब्रायन फॉक्स था। और जिस तरह से वह अपने टास्क के बारे में बात करते हैं वह मुझे बेहद आकर्षित करता है। जैसा कि वह पॉडकास्ट पर कहते हैं:
<ब्लॉकक्वॉट>यह इतना चुनौतीपूर्ण होने का कारण यह था कि हमें बॉर्न शेल के सभी व्यवहारों की ईमानदारी से नकल करनी थी, साथ ही इसे लोगों के उपयोग के लिए एक बेहतर उपकरण बनाने के लिए इसे विस्तारित करने की अनुमति दी गई थी।
यह उस समय भी था जब लोग चर्चा कर रहे थे कि शेल मानक होने का क्या मतलब है। पृष्ठभूमि और अग्रभूमि में प्रतिस्पर्धा के रूप में इस इतिहास के साथ, लोकप्रिय बॉर्न शेल की फिर से कल्पना की गई; फिर से पैदा हुआ।
शेल, बॉर्न-अगेन
इन दो उत्प्रेरकों- फ्री सॉफ्टवेयर मिशन और प्रतियोगिता- ने बॉर्न-अगेन शेल (बैश) को जीवंत किया। उस समय के लिए एक असामान्य चाल में, फॉक्स ने अपने शेल का नाम खुद के नाम पर नहीं रखा, और उन्होंने यूनिक्स से मुफ्त सॉफ्टवेयर के विकास पर ध्यान केंद्रित किया। (हालांकि फॉक्स शेल fsh कमांड #missedopportunity पर फिश शेल को हरा सकता था)। ऐसा लगता है कि नामकरण का विकल्प उनके व्यक्तित्व के अनुरूप है। जैसा कि फॉक्स एपिसोड में कहता है, उसे व्यक्तिगत गौरव की धारणा में भी कोई दिलचस्पी नहीं थी; वह प्रोग्रामिंग की संस्कृति को विकसित करने में मदद करने की कोशिश कर रहा था। हालांकि, वह एक अच्छे वाक्य से ऊपर नहीं था।
यह सुनकर अच्छा लगा कि बॉर्न को शब्दों के नाटक से कोई फर्क नहीं पड़ा। बॉर्न एक कहानी बताता है जब कोई उसके पास गया और एक सम्मेलन में उसे एक बैश टी-शर्ट दी। वह व्यक्ति थे ब्रायन फॉक्स।
Shell | रिलीज़ किया गया | <थ स्कोप="col">निर्माता|
---|---|---|
थॉम्पसन शैल | 1971 | केन थॉम्पसन |
बॉर्न शेल | 1977 | स्टीफन बॉर्न |
बॉर्न-अगेन शेल | 1989 | ब्रायन फॉक्स |
समय के साथ, बैश गोद लेने में बढ़ गया। अन्य इंजीनियरों ने इसका उपयोग करना शुरू कर दिया और इसके डिजाइन में सुधार प्रस्तुत किया। दरअसल, सालों बाद, फॉक्स इस बात पर जोर देगा कि बैश का नियंत्रण छोड़ना सीखना उसके जीवन में सबसे महत्वपूर्ण चीजों में से एक था। जैसे ही यूनिक्स ने लिनक्स और ओपन सोर्स सॉफ्टवेयर मूवमेंट को रास्ता दिया, बैश एक ओपन सोर्स वर्ल्ड में प्रमुख स्क्रिप्टिंग फोर्स बन गया। ऐसा लगता है कि महान परियोजनाएं किसी एक व्यक्ति के दृष्टिकोण के दायरे से आगे बढ़ रही हैं।
शेल्स से हम क्या सीख सकते हैं?
शेल एक ऐसी तकनीक है जो रोजमर्रा के लैपटॉप के उपयोग के लिए इतनी अभिन्न है कि इसे भूलना आसान है, आविष्कार की जरूरत है। थॉम्पसन से बॉर्न से बैश के गोले तक जाने की कहानी कुछ जानी-पहचानी बातें बताती है:
- प्रेरित व्यक्ति सही मिशन को ध्यान में रखकर बड़ी प्रगति कर सकते हैं।
- आज हम जिस चीज पर भरोसा करते हैं, वह हमारे उद्योग में अभी भी जीवित किंवदंतियों के काम पर आधारित है।
- जो सॉफ़्टवेयर जीवित रहने की प्रवृत्ति रखते हैं, वे अपने मूल रचनाकारों की दृष्टि से परे विकसित होते हैं।
कमांड लाइन हीरोज ने सभी सीज़न 3 के लिए प्रोग्रामिंग भाषाओं को कवर किया है और अपने समापन के करीब पहुंच रहा है। प्रोग्रामिंग भाषाओं की उत्पत्ति के बारे में आप जो कुछ भी जानना चाहते हैं, उसे जानने के लिए सदस्यता लेना सुनिश्चित करें, और मुझे नीचे दी गई टिप्पणियों में आपकी शेल कहानियां सुनना अच्छा लगेगा।