बैश (यूनिक्स शेल)

From Vigyanwiki

बैश (यूनिक्स शेल) और कमांड भाषा है जिसे ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर) द्वारा जीएनयू परियोजना के लिए बॉर्न शेल के लिए मुफ्त सॉफ्टवेयर प्रतिस्थापन के रूप में लिखा गया है।[1][2] यह 1989 में पहली बार प्रस्तावित हुआ,[3] इसे अधिकांश लिनक्स वितरणों के लिए डिफ़ॉल्ट लॉगिन शेल के रूप में उपयोग किया गया है।[4]बैश उन पहले कार्यक्रमों में से था जिसे लिनक्स टोरवाल्ड्स ने जीसीसी के साथ लिनक्स में परिवर्तन किया था।[5] लिनक्स के लिए विंडोज उप-प्रणाली के माध्यम से विंडोज 10 और विंडोज़ 11 के लिए संस्करण भी उपलब्ध है।[6][7] यह सोलारिस (ऑपरेटिंग सिस्टम) 11 में डिफ़ॉल्ट उपयोगकर्ता शेल भी है।[8] बैश एप्पल मैक ओ एस (MacOS) के संस्करणों में 10.3 (मूल रूप से, डिफ़ॉल्ट शेल tcsh था) मैक ओ एस कैटालिना के 2019 प्रस्तावित के लिए, डिफ़ॉल्ट शेल को zsh में परिवर्तन कर दिया, चूँकि बैश वैकल्पिक शेल के रूप में उपलब्ध है।[9]

बैश कमांड प्रोसेसर है जो सामान्यतः टेस्टेड विंडो में चलता है जहां उपयोगकर्ता कमांड लिखता है जो कार्रवाई का कारण बनता है। बैश फ़ाइल कमांड को पढ़ सकता है और निष्पादित भी कर सकता है, जिसे शेल स्क्रिप्ट कहा जाता है। अधिकांश यूनिक्स, फ़ाइल नाम ग्लोबिंग, (वाइल्डकार्ड संघ), पाइपिंग, प्रपत्र, कमांड प्रतिस्थापन, चर, स्थिति-परीक्षण और पुनरावृत्ति के लिए नियंत्रण संरचनाओं का समर्थन करता है। कीवर्ड, प्रारूप, डायनामिक स्कोप्ड, चर और भाषा की अन्य बुनियादी विशेषताएं सभी बॉर्न शेल से कॉपी की गई हैं। अन्य विशेषताएं, उदाहरण के लिए, इतिहास csh और ksh शेल से कॉपी की जाती हैं। बैशपॉज़िक(POSIX)- संगत शेल है, लेकिन कई एक्सटेंशन के साथ।

शेल का नाम बॉर्न अगेन शेल के लिए परिवर्णी शब्द है, बॉर्न शेल के नाम पर वाक्य को यह प्रतिस्थापित करता हैi[10] तत्पश्चात जन्म लेने की धारणा उत्पन्न करता है।[11][12]

संस्करण 1.03 (अगस्त 1989) से बैश में सुरक्षा बग,[13] अनुबंध शेलशॉक (सॉफ्टवेयर बग), सितंबर 2014 की प्रारम्भ में शोध किया गया था और जल्दी से इंटरनेट पर परिवर्तन की श्रृंखला का नेतृत्व किया।[14][15][16] बग की पहचान होने के तुरंत बाद बग को ठीक करने के लिए पैच उपलब्ध करा दिए गए थे।

इतिहास

ब्रायन फॉक्स ने 10 जनवरी 1988 को कंप्यूटर प्रोग्रामिंग में बैश को कोड करना शुरू किया, जब रिचर्ड स्टालमैन पूर्व डेवलपर द्वारा की जा रही प्रगति की कमी से असंतुष्ट हो गए।[1][17] स्टॉलमैन और फ्री सॉफ्टवेयर फाउंडेशन ने फ्री शेल पर विचार किया जो सम्मलित शेल स्क्रिप्ट को बीएसडी और जीएनयू कोड से निर्मित पूर्णतया मुक्त प्रणाली के लिए रणनीतिक रूप से चला सकता है यह उन कुछ परियोजनाओं में से था जिसमें फॉक्स ने काम किया था और उन्होंने स्वयं वित्त पोषित किया था। फॉक्स के साथ एफएसएफ के कर्मचारी के रूप में काम करते थे।[1][18] फ़ॉक्स ने 8 जून 1989 को बैश संस्करण .99 को बीटा के रूप में प्रस्तावित किया,[3]और 1992 से [19] 1994 के मध्य,[20] जब उन्हें एफएसएफ से हटा दिया गया, तब तक वे प्राथमिक अनुरक्षक बने रहे।[21] तब उनका उत्तरदायित्व दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई।[22][23][24]

उस समय से, बैश लिनक्स के उपयोगकर्ताओं के बीच अब तक का सबसे लोकप्रिय शेल बन गया है, जो ऑपरेटिंग प्रणाली के विभिन्न वितरणों पर डिफ़ॉल्ट इंटरैक्टिव शेल बन गया है।[25][26] (चूँकि अल्मक्विस्ट शेल डिफ़ॉल्ट स्क्रिप्टिंग शेल हो सकता है) और एप्पल के मैकओएस पर अक्टूबर 2019 में मैकओएस कैटालिना से पहले प्रस्तावित हुआ।[27][28][4] बैश को माइक्रोसॉफ़्ट विंडोज़ में भी पोर्ट किया गया है और साइगविन और मिनजीडब्ल्यू (MinGW) के साथ वितरित किया गया है, डीजेजेपीपी परियोजना द्वारा डीओएस को, नोवेल नेटवेयर को, जीएनवी परियोजना द्वारा ओपन वीएमएस को,[29] अर्काओएस (ArcaOS) को,[30] और एंड्रॉइड को विभिन्न टर्मिनल अनुकरण अनुप्रयोगों के माध्यम से वितरित किया गया है।

सितंबर 2014 में, यूनिक्स/लिनक्स विशेषज्ञ स्टीफ़न चेज़लस ने,[31] कार्यक्रम में सुरक्षा बग का शोध किया। बग, जिसे पहली बार 24 सितंबर को प्रकट किया गया था, जिसका नाम शेलशॉक दिया गया था और इसे CVE-2014-6271, CVE-2014-6277 और CVE-2014-7169 संख्याओं को निर्दिष्ट किया गया था I बग को गंभीर माना गया था, क्योंकि बैश का उपयोग करने वाली कॉमन गेटवे इंटरफ़ेस स्क्रिप्ट्स असुरक्षित हो सकती हैं, जिससे मनमाने कोड निष्पादन को सक्षम किया जा सकता है। बग इस बात से संबंधित था कि कैसे बैश पर्यावरण चर के माध्यम से उप-शैल फ़ंक्शन में परिभाषाओं को को पास करता है।[32]


विशेषताएं

बैश कमांड प्रारूप बॉर्न शेल उत्तम समुच्चय है। बैश 2.05a के बाद से ब्रेस विस्तार, कमांड रेखा पूर्णता (प्रोग्रामयोग्य पूर्णता), बेसिक डिबगिंग और संकेत हैंडलिंग का उपयोग करके समर्थन करता हैI[33] [34][35] बैश बिना संशोधन के बॉर्न शेल स्क्रिप्ट के विशाल बहुमत को निष्पादित कर सकता है, बॉर्न शेल स्क्रिप्ट के अपवाद के साथ फ्रिंज प्रारूप व्यवहार में भिन्न-भिन्न व्याख्या की गई है, या नए बैश बिल्टिन से मेल खाते प्रणाली कमांड को चलाने का प्रयास किया जाता है, आदि। बैश कमांड प्रारूप में तत्पर किए गए विचार सम्मलित हैं। k शेल (ksh) और C शेल (csh) से जैसे कि कमांड रेखा संपादन, कमांड इतिहास (इतिहासआज्ञा),[36] निर्देशिका ढेर, $RANDOMतथा $ PPID चर, और पॉज़िक्स कमांड प्रतिस्थापन प्रारूप $(…)है

जब कोई उपयोगकर्ता अंतर सक्रिय कमांड-शेल के भीतर टैब कुंजी दबाता है, तो बैश स्वचालित रूप से कमांड रेखा पूर्णता का उपयोग करता है, बीटा संस्करण 2.04,[37] आंशिक रूप से टाइप किए गए प्रोग्राम नाम, फ़ाइल नाम और चर नाम से मिलान करने के लिए किया जाता है। बैश कमांड-रेखा पूर्णता प्रणाली बहुत लचीली और अनुकूलन योग्य है, और प्रायः ऐसे कार्यों के साथ पैक की जाती है जो विशिष्ट कार्यक्रमों और कार्यों के लिए तर्कों और फ़ाइलनाम को पूरा करते हैं।

बैश के प्रारूप में बॉर्न शेल में कई एक्सटेंशन की कमी है। बैश बाहरी प्रक्रियाओं को उत्पन्न किए बिना पूर्णांक गणना (अंकगणितीय मूल्यांकन) कर सकता है। इस उद्देश्य के लिए यह ((…)) कमांड और $((…)) चर प्रारूप उपयोग करता है I इसका प्रारूप इनपुट/आउटपुट पुनर्निर्देशन को सरल करता है। उदाहरण के लिए, यह &> संचालक का उपयोग करके एक ही समय में मानक आउटपुट और मानक त्रुटि को पुनर्निर्देशित कर सकता है। यह बॉर्न शेल समकक्ष कमांड > फ़ाइल 2>&1 ''की तुलना में लिखना सरल है''। बैश <(command) तथा >(command) प्रारूप का उपयोग करके प्रक्रिया प्रतिस्थापन का समर्थन करता है I जो कमांड के आउटपुट (या इनपुट) को प्रतिस्थापित करता है जहां सामान्यतः फ़ाइल नाम का उपयोग किया जाता है। (यह उन प्रणालियों पर / proc / fd / अनाम पाइपों के माध्यम से कार्यान्वित किया जाता है जो इसका समर्थन करते हैं, या जहां आवश्यक हो अस्थायी नामित पाइपों के माध्यम से)।

'फ़ंक्शन' कीवर्ड का उपयोग करते समय, बैश फ़ंक्शन घोषणाएँ बॉर्न/कोर्न/पॉज़िक्स स्क्रिप्ट के साथ संगत नहीं होती हैं ('फ़ंक्शन' का उपयोग करते समय कोर्न शेल में वही समस्या होती है), लेकिन बैश उसी फ़ंक्शन घोषणा प्रारूप को बॉर्न और कोर्न शेल के रूप में स्वीकार करता है, और पॉज़िक्स-अनुरूप है। इन अन्य अंतरों के कारण, बॉर्न या कोर्न शेल दुभाषियों के अंतर्गत बैश शेल स्क्रिप्ट शायद ही कभी चलाने योग्य होते हैं, जब तक कि निश्चयपूर्वक उस अनुकूलता को ध्यान में रखकर नहीं लिखा जाता है, जो लिनक्स के अधिक व्यापक होने के कारण कम उपयोग होता जा रहा है। लेकिन पॉज़िक्स मोड में, बैश पॉज़िक्स के साथ अधिक साधारण दृष्टि से अनुरूप है।[38]

बैश दस्तावेजों का समर्थन करता है। चूंकि संस्करण 2.05b बैश <<< ऑपरेटर का उपयोग करके यहां स्ट्रिंग से मानक इनपुट को पुनर्निर्देशित कर सकता है ।

बैश 3.0 पर्ल के स्मरण प्रारूप का उपयोग करके इस प्रक्रिया में नियमित अभिव्यक्ति संघ का समर्थन करता है।[39]

फरवरी 2009 में,[40] बैश 4.0 ने साहचर्य सरणियों के लिए समर्थन दर्शाया।[41]एडब्लूके या टीसीएल के समान प्रकार से साहचर्य सरणी सूचकांक हैं।[42] इनका उपयोग बहुआयामी सरणियों का अनुकरण करने के लिए किया जा सकता है। बैश 4 भी अपने लाइसेंस को जीपीएल -3.0-या-बाद में बदल देता है; कुछ उपयोगकर्ताओं को इस लाइसेंस परिवर्तन पर संदेह है कि क्यों मैक ओ एस पुराने संस्करणों का उपयोग करना जारी रखता है।[43] एप्पल ने अंततः 2019 में मैक ओ एस कैटालिना प्रस्तावित के साथ डिफ़ॉल्ट शेल के रूप में अपने ऑपरेटिंग प्रणाली में बैश का उपयोग करना बंद कर दिया।[9]

ब्रेस विस्तार

ब्रेस विस्तार, जिसे अल्टरनेशन भी कहा जाता है, C शेल से कॉपी की गयी विशेषता है। यह वैकल्पिक संयोजनों का समुच्चय उत्पन्न करता है। उत्पन्न किए गए परिणामों को फाइलों के रूप में उपस्तिथ नहीं होना चाहिए। प्रत्येक विस्तारित स्ट्रिंग के परिणाम क्रमबद्ध नहीं होते हैं और बाएं से दाएं क्रम को संरक्षित किया जाता है:

$ echo a{p,c,d,b}e
ape ace ade abe
$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf

उपयोगकर्ताओं को पोर्टेबल शेल स्क्रिप्ट में ब्रेस विस्तार का उपयोग नहीं करना चाहिए, क्योंकि बॉर्न शेल समान आउटपुट नहीं देता है।

$ # A traditional shell does not produce the same output
$ /bin/sh -c 'echo a{p,c,d,b}e'
a{p,c,d,b}e

जब ब्रेस विस्तार को वाइल्डकार्ड के साथ जोड़ दिया जाता है, तो पहले ब्रेसिज़ का विस्तार किया जाता है, और फिर परिणामी वाइल्डकार्ड को सामान्य रूप से प्रतिस्थापित किया जाता है। इसलिए, वर्तमान निर्देशिका में JPEG और PNG छवियों की सूची निम्नलिखित का उपयोग करके प्राप्त की जा सकती है:

ls *.{jpg,jpeg,png} # expands to *.jpg *.jpeg *.png - after which,

                     # the wildcards are processed

echo *.{png,jp{e,}g} # echo just show the expansions -

                   # and braces in braces are possible.


प्रत्यावर्तन के अतिरिक्त, ब्रेस विस्तार का उपयोग दो पूर्णांकों या डबल डॉट्स द्वारा भिन्न किए गए वर्णों के बीच अनुक्रमिक श्रेणियों के लिए किया जा सकता है। बैश के नए संस्करण तीसरे पूर्णांक को वृद्धि निर्दिष्ट करने की अनुमति देते हैं।

ls *.{jpg,jpeg,png}    # expands to *.jpg *.jpeg *.png - after which,
                       # the wildcards are processed
echo *.{png,jp{e,}g}   # echo just show the expansions -
                       # and braces in braces are possible.

जब ब्रेस विस्तार को चर विस्तार (A.K.A. पैरामीटर विस्तार और पैरामीटर प्रतिस्थापन) के साथ जोड़ा जाता है, तो चर विस्तार ब्रेस विस्तार के बाद किया जाता है, जो कुछ विषयो में eval बनाने में निर्मित उपयोग की आवश्यकता हो सकती है जो, इस प्रकार:

$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
$ echo {01..10}
01 02 03 04 05 06 07 08 09 10
$ echo file{1..4}.txt
file1.txt file2.txt file3.txt file4.txt
$ echo {a..e}
a b c d e
$ echo {1..10..3}
1 4 7 10
$ echo {a..j..3}
a d g j

जब ब्रेस विस्तार को चर विस्तार (A.K.A पैरामीटर एक्सपेंशन और पैरामीटर सब्स्टिटूशन) के साथ जोड़ दिया जाता है, तो चर विस्तार ब्रेस एक्सपेंशन के बाद किया जाता है, जो कुछ मामलों में eval built-in, thus:,

$ start=1; end=10
$ echo {$start..$end}  # fails to expand due to the evaluation order
{1..10}
$ eval echo {$start..$end} # variable expansion occurs then resulting string is evaluated
1 2 3 4 5 6 7 8 9 10

स्टार्टअप स्क्रिप्ट

जब बैश प्रारम्भ होता है, तो विभिन्न प्रकार की डॉट फाइलों में कमांड निष्पादित करता है। शेल स्क्रिप्ट के विपरीत, डॉट फ़ाइलों में सामान्यतः निष्पादन अनुमति सक्षम नहीं होती है और न ही दुभाषिया निर्देश जैसे !/bin/bash.

परंपरा-संगत बैश स्टार्टअप उदाहरण

नीचे दिया गया स्केलेटन~/.bash_profile बॉर्न शेल के साथ संगत है और ~/.bashrc , ~/.bash_loginके लिए csh के समान शब्दार्थ देता है तथा [ -r filename ] && cmd e> एक शॉर्ट सर्किट मूल्यांकन है जो परीक्षण करता है कि क्या फ़ाइल नाम सम्मलित है और पढ़ने योग्य है,&& यदि यह नही तो इसके बाद के भाग को छोड़ दें ।

[ -r ~/.profile ] && . ~/.profile             # set up environment, once, Bourne-sh syntax only
if [ -n "$PS1" ] ; then                       # are we interactive?
   [ -r ~/.bashrc     ] && . ~/.bashrc        # tty/prompt/function setup for interactive shells
   [ -r ~/.bash_login ] && . ~/.bash_login    # any at-login tasks for login shell only
fi                                            # End of "if" block

बैश स्टार्टअप में ऑपरेटिंग सिस्टम की समस्याएँ

यूनिक्स और लिनक्स के कुछ संस्करणों में बैश प्रणाली स्टार्टअप स्क्रिप्ट होती है सामान्यतः /etc निर्देशिका के अंतर्गत। बैश इन्हें अपने मानक आरंभीकरण के भाग के रूप में रखता है, लेकिन अन्य स्टार्टअप फ़ाइलें उन्हें प्रलेखित बैश स्टार्टअप अनुक्रम की तुलना में भिन्न पढ़ा जा सकता है। रूट उपयोक्ता की फ़ाइलों में डिफ़ॉल्ट सामग्री में भी समस्याएँ हो सकती हैं, साथ ही स्केलेटन फ़ाइलें जो सिस्टम सेटअप पर नए उपयोगकर्ता खातों को प्रदान करता है। X विंडो प्रणाली को प्रक्षेपण करने वाली स्टार्टअप स्क्रिप्ट्स विंडो प्रबंधक को प्रक्षेपण करने से पहले उपयोगकर्ता-पर्यावरण चर स्थापित करने के प्रयास में उपयोगकर्ता बैश स्टार्टअप स्क्रिप्ट के साथ आश्चर्यजनक चीजें भी कर सकते हैं। इन विषयों को प्रायः ~/.xsession या ~/.xprofile फ़ाइल का उपयोग करके ~/.profile पढ़ने के लिए संबोधित किया जा सकता है - जो पर्यावरण चर प्रदान करता है जो बैश शेल विंडो को विंडो मैनेजर की अपेक्षा से उत्पन्न करता है, जैसे किएक्सटर्म(xterm) या गनोम टर्मिनल I

पोर्टेबिलिटी

--posix विकल्प के साथ आमंत्रित करना या किसी स्क्रिप्ट में set -o posix बताते हुए बैश को POSIX 1003.2 मानक के अति निकट के अनुरूप है।[44] पोर्टेबिलिटी के लिए बनाई गई बैश शेल स्क्रिप्ट को कम से कम पॉज़िक्स शेल मानक को ध्यान में रखना चाहिए। पॉज़िक्स में नहीं मिली कुछ बैश विशेषताएँ हैं:[44][45]

  • कुछ विस्तारित इनवोकेशन विकल्प
  • ब्रेस विस्तार
  • सरणियाँ और साहचर्य सरणियाँ
  • डबल कोष्ठक[[ ... ]] विस्तारित परीक्षण निर्माण और इसका रेगेक्स संघ
  • डबल कोष्ठक अंकगणित-मूल्यांकन निर्माण (केवल (( ... )); $(( ... )) पॉज़िक्स है)
  • पैरामीटर विस्तार में कुछ स्ट्रिंग-परिवर्तन ऑपरेशन
  • स्थानीय सीमा वाले चर के लिए
  • प्रक्रिया प्रतिस्थापन
  • बैश-विशिष्ट बिल्टिन
  • कोप्रोसेस
  • $EPOCHSECONDS and $EPOCHREALTIME चर [46]

यदि कोड का टुकड़ा ऐसी सुविधा का उपयोग करता है, तो इसे बैशिज़्म कहा जाता है - पोर्टेबल उपयोग के लिए समस्या। डेबियन का checkbashisms और विदर होलेन के shellcheck इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी स्क्रिप्ट में यह भाग सम्मलित नहीं हैं।[47][48] सूची वास्तविक लक्ष्य शेल के आधार पर भिन्न होती है: डेबियन की नीति उनकी लिपियों में कुछ एक्सटेंशन की अनुमति देती है (जैसा कि वे अल्मक्विस्ट शेल डैश शेल में हैं),[45]जबकि पूर्व पॉज़िक्स बॉर्न शेल का समर्थन करने का निश्चय रखने वाले स्क्रिप्ट है, जैसे कि autoconf की configure, और भी अधिक हैं उन सुविधाओं में सीमित है जिनका वे उपयोग कर सकते हैं।[49]

कीबोर्ड शॉर्टकट

बैश डिफ़ॉल्ट इमैक(Emacs) कुंजी बाइंडिंग का उपयोग करके कमांड लाइन संपादन के लिए कीबोर्ड शॉर्टकट प्रदान करने के लिए रीडलाइन का उपयोग करता है। vi बाइंडिंग को set -o vi को चलाकर सक्षम किया जा सकता है .[50]

प्रक्रिया प्रबंधन

बैश शेल में कमांड के निष्पादन के दो उपाय हैं: बैच, और समवर्ती मोड।

बैच में कमांड निष्पादित करने के लिए (अर्थात, अनुक्रम में) उन्हें वर्ण ";", या भिन्न-भिन्न पंक्तियों से भिन्न किया जाना चाहिए;

command1; command2

इस उदाहरण में, जब command1 समाप्त हो जाता है, तो command2 निष्पादित हो जाता है।

निष्पादन कमांड के अंत में (प्रतीक) का उपयोग करके command1 की पृष्ठभूमि का निष्पादन हो सकता है, और प्रक्रिया को पृष्ठभूमि में निष्पादित किया जाएगा जो शेल पर तुरंत नियंत्रण लौटाता है और कमांड के निरंतर निष्पादन की अनुमति देता है।

command1 &

या दो command1 और command2 का समवर्ती निष्पादन करने के लिए, उन्हें निम्नलिखित उपाय से बैश शेल में निष्पादित किया जाना चाहिए:

command1 & command2

इस विषय में command1 को पृष्ठभूमि और प्रतीक में निष्पादित किया जाता है, तथा उस शेल पर नियंत्रण लौटाता है जो अग्रभूमि में command2 को निष्पादित करता है।

इस प्रक्रिया को रोका जा सकता है और जब प्रक्रिया अग्रभूमि में चल रही हो तो Ctrl+z लिख करके बैश पर नियंत्रण लौटाया जा सकता है। [51]

सभी प्रक्रियाओं की सूची, दोनों पृष्ठभूमि में रुकी हुई, jobsको चलाकर प्राप्त की जा सकती है :

$ jobs [1]- Running command1 & [2]+ Stopped command2 </syntaxhighlight>

आउटपुट में, कोष्ठक में संख्या जॉब आईडी को संदर्भित करती है। धन चिह्न bg तथा fgके लिए डिफ़ॉल्ट प्रक्रिया को दर्शाता हैI टेक्स्ट रनिंग और स्टॉप्ड प्रक्रिया अवस्था को संदर्भित करता है। अंतिम स्ट्रिंग वह कमांड है जिसने प्रक्रिया शुरू की।

विभिन्न आदेशों का उपयोग करके प्रक्रिया की स्थिति को परिवर्तित किया जा सकता हैI fg कमांड प्रक्रिया को अग्रभूमि में लाता है, जबकि bg पृष्ठभूमि में चल रही रुकी हुई प्रक्रिया को सेट करता है।कार्य करने की प्रक्रिया को निर्दिष्ट करने के लिए bg तथाfg अपने पहले तर्क के रूप में जॉब आईडी ले सकते हैं।jobsआउटपुट में प्लस चिह्न द्वारा पहचाने जाने वाली डिफ़ॉल्ट प्रक्रिया का उपयोग करते हैं। kill कमांड का उपयोग किसी प्रक्रिया को समय से पहले संकेत भेजकर समाप्त करने के लिए किया जा सकता है I जॉब आईडी को प्रतिशत चिह्न के बाद निर्दिष्ट किया जाना चाहिए:

kill %1

सशर्त निष्पादन

बैश सशर्त निष्पादन कमांड विभाजक की आपूर्ति करता है जो पूर्ववर्ती कमांड द्वारा निर्धारित एग्जिट कोड पर आकस्मिक कमांड का निष्पादन करता है। उदाहरण के लिए:

cd "$SOMEWHERE" && ./do_something || echo "An error occurred" >&2

जहां ./do_something केवल तभी निष्पादित होता है जब cd (निर्देशिका बदलें) कमांड सफल होता है (शून्य की निकास स्थिति लौटाता है) और echo कमांड केवल तभी निष्पादित किया जाएगा जब cd या ./do_something कमांड त्रुटि लौटाता है (गैर-शून्य) बाहर निकलने की स्थिति)।

सभी आदेशों के लिए निकास स्थिति को विशेष चर $? में संग्रहीत किया जाता हैI बैश भी समर्थन करता है if ...;then ...;else ...;fi तथा case $VARIABLE in $pattern)...;;$other_pattern)...;; esac सशर्त कमांड मूल्यांकन के रूप।

बग रिपोर्टिंग

बैशबग नामक बाहरी कमांड बैश शेल बग की रिपोर्ट करता है। जब आदेश लागू किया जाता है, तो यह उपयोगकर्ता के डिफ़ॉल्ट संपादक को भरने के लिए फॉर्म के साथ लाता हैI फॉर्म को बैश अनुरक्षकों (या वैकल्पिक रूप से अन्य ईमेल पतों ) पर भेज दिया जाता है।[52][53]

प्रोग्राम करने योग्य पूर्णता

बैश बिल्ट-इन complete, compopt, तथा compgen निर्दिष्ट के माध्यम से प्रोग्रामेबल कमांड-लाइन पूर्णता का समर्थन करता है ।[54] यह सुविधा 2000 में प्रस्तावित 2.04 के बीटा संस्करण के बाद से उपलब्ध है।[55][56] ये कमांड्स (अर्थात इंस्टॉल किए गए प्रोग्राम), फ़ंक्शंस, चरों और फाइलनामों के लिए जटिल और बुद्धिमान पूर्णता विनिर्देश को सक्षम करते हैं।[57]

completeऔर compopt दो आदेश निर्दिष्ट करते हैं कि रीडलाइन इनपुट में कुछ उपलब्ध कमांड या विकल्पों के तर्क कैसे सूचीबद्ध होने जा रहे हैं। संस्करण 5.1 के अनुसार, कमांड या विकल्प को पूरा करने के लिए सामान्यतः टैब ↹ कुंजी स्ट्रोक द्वारा अपना नाम लिखने के बाद सक्रिय किया जाता है

प्रस्तावित इतिहास

संस्करण विमोचन तिथि जारी नोट्‍स
बैश-5.2 2022-09-26 समाचार
बैश-5.1 2020-12-07 जीथब संस्करण इतिहास समाचार [41]
बैश-5.0 2019-01-07 [58][59][60]
बैश-5.0-rc1 2018-12-20
बैश-5.0-बीटा2 2018-11-28
बैश-5.0-बीटा 2018-09-17
बैश-5.0-अल्फा 2018-05-22
बैश-4.4 2016-09-15 जीथब संस्करण इतिहास समाचार v4.4
बैश-4.4-rc2 2016-08-22
बैश-4.4-rc1 2016-02-24
बैश-4.4-बीटा2 2016-07-11
बैश-4.4-बीटा 2015-10-12
बैश-4.3 2014-02-26
बैश-4.2 2011-02-13
बैश-4.1 2009-12-31
बैश-4.0 2009-02-20
बैश-4.0-rc1 2009-01-12
बैश-3.2 2006-10-11
बैश-3.1 2005-12-08
बैश-3.0 2004-08-03
बैश-2.05b 2002-07-17
बैश-2.05a 2001-11-16
बैश-2.05 2001-04-09
बैश-2.04 2000-03-21
बैश-2.03 1999-02-19
बैश-2.02 1998-04-18
बैश-2.01 1997-06-05
बैश-2.0 1996-12-31

यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 Richard Stallman (forwarded with comments by Chet Ramey) (February 10, 1988). "जीएनयू + बीएसडी = ?". Newsgroupcomp.unix.questions. Usenet: 2362@mandrill.CWRU.Edu. Archived from the original on December 28, 2021. Retrieved December 28, 2021. डेढ़ साल के लिए, जीएनयू खोल "बस पूरा हो गया" था। लेखक ने जो किया था उसे पूरा करने के लिए बार-बार वादे किए, और उन्हें कभी नहीं रखा। अंत में मुझे विश्वास नहीं हो रहा था कि वह कभी भी कुछ भी प्रदान करेगा। इसलिए फाउंडेशन के स्टाफ सदस्य ब्रायन फॉक्स अब बॉर्न शेल की नकल लागू कर रहे हैं।
  2. Hamilton, Naomi (May 30, 2008), "The A-Z of Programming Languages: BASH/Bourne-Again Shell", Computerworld: 2, archived from the original on July 6, 2011, retrieved March 21, 2011, When Richard Stallman decided to create a full replacement for the then-encumbered Unix systems, he knew that he would eventually have to have replacements for all of the common utilities, especially the standard shell, and those replacements would have to have acceptable licensing.
  3. 3.0 3.1 Brian Fox (forwarded by Leonard H. Tower Jr.) (June 8, 1989). "बैश बीटा रिलीज़ में है!". Newsgroupgnu.announce. Archived from the original on May 4, 2013. Retrieved October 28, 2010.
  4. 4.0 4.1 Warren, Tom (June 4, 2019). "Apple macOS Catalina में डिफ़ॉल्ट शेल के रूप में बैश को zsh से बदल देता है". The Verge. Archived from the original on June 10, 2019. Retrieved June 13, 2019.
  5. Torvalds, Linus Benedict (August 1991). "like.the.minis". Retrieved 2009-09-06. मैंने वर्तमान में बैश (1.08) और जीसीसी (1.40) को पोर्ट किया है, और चीजें काम करने लगती हैं।
  6. "विंडोज 10 पर बैश शेल कमांड-लाइन टूल कैसे इंस्टॉल करें". September 28, 2016. Archived from the original on November 20, 2016. Retrieved November 20, 2016.
  7. Hoffman, Chris. "विंडोज 11 पर लिनक्स के लिए विंडोज सबसिस्टम कैसे स्थापित करें". How-To Geek (in English). Retrieved 2022-10-12.
  8. "उपयोगकर्ता पर्यावरण सुविधा परिवर्तन". Oracle. Archived from the original on June 12, 2018. Retrieved June 8, 2018.
  9. 9.0 9.1 Hughes, Matthew (2019-06-04). "MacOS कैटालिना बैश के बजाय Zsh का उपयोग क्यों करती है? लाइसेंसिंग". The Next Web (in English). Archived from the original on December 31, 2020. Retrieved 2021-01-12.
  10. "मुझे लगभग एक Linux संपादक और कंपाइलर मिल गया है". Dr. Dobb's. Archived from the original on March 2, 2021. Retrieved 2020-09-12.
  11. Richard Stallman (November 12, 2010). "About the GNU Project". Free Software Foundation. Archived from the original on April 24, 2011. Retrieved March 13, 2011. "Bourne Again Shell" is a play on the name Bourne Shell, which was the usual shell on Unix.
  12. Gattol, Markus (March 13, 2011), Bourne-again Shell, archived from the original on March 9, 2011, retrieved March 13, 2011, The name is a pun on the name of the Bourne shell (sh), an early and important Unix shell written by Stephen Bourne and distributed with Version 7 Unix circa 1978, and the concept of being "born again".
  13. Chazelas, Stephane (4 October 2014). "oss-sec मेलिंग सूची संग्रह". Seclists.org. Archived from the original on October 6, 2014. Retrieved 4 October 2014.
  14. Leyden, John (September 24, 2014). "पैच बैश नाउ: 'शेलशॉक' बग ब्लास्ट OS X, Linux सिस्टम वाइड ओपन". The Register. Archived from the original on October 16, 2014. Retrieved September 25, 2014.
  15. Perlroth, Nicole (September 25, 2014). "सुरक्षा विशेषज्ञ बैश में 'शेलशॉक' सॉफ्टवेयर बग के महत्वपूर्ण होने की अपेक्षा करते हैं". The New York Times. Archived from the original on April 5, 2019. Retrieved September 25, 2014.
  16. Seltzer, Larry (29 September 2014). "शेलशॉक हार्टब्लीड को महत्वहीन बना देता है". ZDNet. Archived from the original on May 14, 2016.
  17. Brian Fox (August 29, 1996), shell.c, Free Software Foundation, archived from the original on September 28, 2018, retrieved November 1, 2010, Birthdate: Sunday, January 10th, 1988. Initial author: Brian Fox
  18. Richard Stallman (October 3, 2010). "About the GNU Project". Free Software Foundation. Archived from the original on April 24, 2011. Retrieved March 21, 2011. Free Software Foundation employees have written and maintained a number of GNU software packages. Two notable ones are the C library and the shell. … We funded development of these programs because the GNU Project was not just about tools or a development environment. Our goal was a complete operating system, and these programs were needed for that goal.
  19. len (g...@prep.ai.mit.edu) (April 20, 1993). "जनवरी 1993 जीएनयू का बुलेटिन". Newsgroupgnu.announce. Usenet: gnusenet930421bulletin@prep.ai.mit.edu. Archived from the original on March 2, 2021. Retrieved October 28, 2010.
  20. Ramey, Chet (August 1, 1994). "बैश - GNU शेल (प्रतिबिंब और सीखे गए सबक)". Linux Journal. Archived from the original on December 5, 2008. Retrieved November 13, 2008.
  21. Chet Ramey (October 31, 2010), Dates in your Computerworld interview, archived from the original on July 20, 2012, retrieved October 31, 2010
  22. Chet Ramey (June 12, 1989). "बैश 0.99 फिक्स और सुधार". Newsgroupgnu.bash.bug. Archived from the original on November 10, 2012. Retrieved November 1, 2010.
  23. Chet Ramey (July 24, 1989). "कुछ बैश-1.02 फिक्स". Newsgroupgnu.bash.bug. Archived from the original on November 10, 2012. Retrieved October 30, 2010.
  24. Brian Fox (March 2, 1990). "बैश 1.05 की उपलब्धता". Newsgroupgnu.bash.bug. Archived from the original on November 10, 2012. Retrieved October 30, 2010.
  25. Bresnahan, Christine; Blum, Richard (April 2015). CompTIA Linux+ Linux प्रोफेशनल इंस्टीट्यूट स्टडी गाइड द्वारा संचालित: परीक्षा LX0-103 और परीक्षा LX0-104 (3rd ed.). John Wiley & Sons, Inc. p. 5. ISBN 978-1-119-02122-3. Archived from the original on March 2, 2021. Retrieved June 6, 2016. लिनक्स में, अधिकांश उपयोगकर्ता बैश चलाते हैं क्योंकि यह सबसे लोकप्रिय शेल है।
  26. Danesh, Arman; Jang, Michael (February 2006). मास्टरिंग लिनक्स. John Wiley & Sons, Inc. p. 363. ISBN 978-0-7821-5277-7. Archived from the original on March 2, 2021. Retrieved June 6, 2016. बॉर्न अगेन शेल (बैश) लिनक्स वितरण के साथ स्थापित सबसे आम शेल है।
  27. Foster-Johnson, Eric; Welch, John C.; Anderson, Micah (April 2005). शेल स्क्रिप्टिंग की शुरुआत. John Wiley & Sons, Inc. p. 6. ISBN 978-0-7645-9791-6. Archived from the original on March 2, 2021. Retrieved June 6, 2016. बैश अब तक का सबसे लोकप्रिय शेल है और Linux और Mac OSX सिस्टम पर डिफ़ॉल्ट शेल बनाता है।
  28. "अपने Mac पर zsh को डिफ़ॉल्ट शेल के रूप में उपयोग करें - Apple सहायता". Archived from the original on December 2, 2019. Retrieved 1 July 2019.
  29. "नए जीएनवी पैकेजों को स्थापित करना". Archived from the original on October 3, 2020. Retrieved 2020-09-04.
  30. "संगतता सबसिस्टम". Archived from the original on September 23, 2020. Retrieved 2020-09-04.
  31. Juliana, Cino (10 June 2017). "Linux बैश निकास स्थिति और बैश में निकास स्थिति कैसे सेट करें - Techolac". Archived from the original on June 21, 2019. Retrieved 21 June 2019.
  32. Huzaifa Sidhpurwala (2014-09-24). "बैश विशेष रूप से तैयार किए गए पर्यावरण चर कोड इंजेक्शन हमले". Red Hat. Archived from the original on September 25, 2014. Retrieved September 25, 2014.
  33. "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
  34. "बैश परिवर्तन [बैश हैकर्स विकी (DEV 20200708T2203)]". wiki-dev.bash-hackers.org. Archived from the original on September 23, 2019. Retrieved September 23, 2019.
  35. "डिबगिंग बैश स्क्रिप्ट". tldp.org. Archived from the original on November 4, 2018. Retrieved November 20, 2018.
  36. "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on September 15, 2019. Retrieved September 15, 2019.
  37. "बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
  38. "6.11 Bash POSIX Mode", The GNU Bash Reference Manual, for Bash, Version 4.1, December 23, 2009, archived from the original on December 3, 2010, retrieved October 26, 2010
  39. "उन्नत बैश-स्क्रिप्टिंग गाइड". www.tldp.org. Section 37.2 (Bash, version 3). Archived from the original on May 5, 2017. Retrieved 2017-03-05.
  40. "बैश, संस्करण 4". tldp.org. Archived from the original on July 1, 2018. Retrieved June 25, 2018.
  41. 41.0 41.1 Cite error: Invalid <ref> tag; no text was provided for refs named bashfaq061
  42. "Arrays (बैश संदर्भ मैनुअल)". www.gnu.org. Archived from the original on July 11, 2018. Retrieved July 4, 2018.
  43. "macos - OSX पर बैश को संस्करण 4.0 में अपडेट करें". Ask Different. Archived from the original on June 25, 2018. Retrieved June 25, 2018.
  44. 44.0 44.1 Mendel Cooper. "पोर्टेबिलिटी मुद्दे". The Linux Documentation Project. ibiblio.org. Archived from the original on January 27, 2012. Retrieved January 26, 2012.
  45. 45.0 45.1 "10. फाइलें". Debian Policy Manual v4.5.0.2. Archived from the original on May 12, 2020. Retrieved May 11, 2020.
  46. "लिनक्स, मैकओएस और बैश में दिनांक और समय को कैसे प्रारूपित करें?". Shell Tips!. Archived from the original on June 3, 2020. Retrieved June 3, 2020.
  47. checkbashisms(1) – Linux General Commands Manual
  48. shellcheck(1) – Linux General Commands Manual
  49. "पोर्टेबल खोल". Autoconf. Archived from the original on March 2, 2021. Retrieved 20 January 2020.
  50. "बैश सहायता - एक बैश ट्यूटोरियल". Hypexr.org. October 5, 2012. Archived from the original on March 2, 2021. Retrieved July 21, 2013.
  51. "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
  52. bashbug(1) Archived October 2, 2018, at the Wayback Machine, die.net
  53. "Linux / Unix Command: bashbug" Archived October 6, 2014, at the Wayback Machine, apple.com
  54. "बैश संदर्भ मैनुअल". tiswww.case.edu.
  55. "बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
  56. "/gnu/bash का अनुक्रमणिका". ftp.swin.edu.au. Archived from the original on March 8, 2020. Retrieved September 15, 2019.
  57. "प्रोग्राम करने योग्य पूर्णता का परिचय". tldp.org. Retrieved 2022-01-21.
  58. "github version history NEWS v5.0". GitHub (in English). Archived from the original on May 4, 2022. Retrieved 2021-03-01.
  59. "Bash changes [Bash Hackers Wiki]". Archived from the original on March 18, 2020. Retrieved November 25, 2019.
  60. "Bash-5.0 release available". lists.gnu.org. Archived from the original on November 8, 2020. Retrieved 2021-03-01.


बाहरी संबंध