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

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

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

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

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

इतिहास
ब्रायन फॉक्स ने 10 जनवरी 1988 को कंप्यूटर प्रोग्रामिंग में बैश को कोड करना शुरू किया, जब रिचर्ड स्टालमैन पूर्व डेवलपर द्वारा की जा रही प्रगति की कमी से असंतुष्ट हो गए। स्टॉलमैन और नि: शुल्क सॉफ्टवेयर बुनियाद ने नि: शुल्क आवरण पर विचार किया जो सम्मलित आवरण स्क्रिप्ट को बीएसडी और जीएनयू कोड से निर्मित पूर्णतया मुक्त प्रणाली के लिए रणनीतिक रूप से चला सकता है कि यह उन कुछ परियोजनाओं में से था जिसमें फॉक्स ने काम किया था और उन्होंने स्वयं वित्त पोषित किया था। फॉक्स के साथ एफएसएफ के कर्मचारी के रूप में काम करना। फ़ॉक्स ने 8 जून 1989 को बैश संस्करण .99 को बीटा के रूप में प्रस्तावित किया, और 1992 से 1994 के मध्य, जब उन्हें एफएसएफ से हटा दिया गया, तब तक वे प्राथमिक अनुरक्षक बने रहे। तब उनका उत्तरदायित्व दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई।

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

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

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

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

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

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

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

बैश 3.0 पर्ल की याद दिलाने वाले वाक्य-विन्यास का उपयोग करके इस प्रक्रिया में नियमित अभिव्यक्ति संघ का समर्थन करता है।

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

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

$ echo a{p,c,d,b}e

ape ace ade abe

$ इको {a,b,c}{d,e,f}

विज्ञापन ad ae af bd be bf cd ce cf

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

$ पारंपरिक आवरण आउटपुट का उत्पादन नहीं करता हैI

$ /bin/sh -c 'echo a{p,c,d,b}e'

a{p,c,d,b}e

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

{जेपीजी, जेपीईजी, पीएनजी} तक विस्तृत होता है*.जेपीजी*.जेपीजी*.जेपीजी जिसके बाद, वाइल्डकार्ड संसाधित किए जाते हैं इको {पीएनजी, जेपी {ई,} जी} इको ​​केवल विस्तार दिखाएं - और ब्रेसिज़ में ब्रेसिज़ संभव हैं।

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

$ इको {1..10}

1 2 3 4 5 6 7 8 9 10

$ इको {01..10}

01 02 03 04 05 06 07 08 09 10

$ इको फ़ाइल {1..4}.टेक्स्ट

फ़ाइल 1.टेक्स्ट फ़ाइल 2.टेक्स्ट फ़ाइल 3.टेक्स्ट फ़ाइल 4.टेक्स्ट

$ इको {a..e}

a b c d e

$ इको {1..10..3}

1 4 7 10

$ इको {a..j..3}

a d g ja d g j

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

$ प्रारंभ = 1; अंत = 10

$ इको {$शुरू..$अंत} मूल्यांकन क्रम के कारण विस्तार करने में विफल रहता है

{1..10}

$ ईवल इको {$शुरू..$अंत} चर विस्तार तब होता है जिसके परिणामस्वरूप स्ट्रिंग का मूल्यांकन किया जाता है

1 2 3 4 5 6 7 8 9 10

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

विरासत-संगत बैश स्टार्टअप उदाहरण
कंकाल  नीचे बॉर्न आवरण के साथ संगत है और इसके लिए csh के समान शब्दार्थ देता है   तथा. e> एक शॉर्ट सर्किट मूल्यांकन है जो परीक्षण करता है कि क्या फ़ाइल नाम मौजूद है और पढ़ने योग्य है, अगर यह नही तो इसके बाद के भाग को छोड़ दें  ।

<वाक्यविन्यास लैंग = बैश> [-r ~/.रूपरेखा] &&। ~/.रूपरेखा सेट अप पर्यावरण, एक बार, केवल बॉर्न-श वाक्यविन्यास अगर [-एन $ पीएस 1]; तो क्या हम इंटरएक्टिव हैं? [-r ~/.bashrc] &&। इंटरएक्टिव आवरण के लिए ~/.bashrc # tty/prompt/function सेटअप [-r ~/.bash_login] &&। ~/.bash_login केवल लॉगिन आवरण के लिए कोई भी लॉगिन कार्य अगर ब्लॉक का अंत 

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

पोर्टेबिलिटी
के साथ बैश का आह्वान करना विकल्प या कथन   एक स्क्रिप्ट में बैश को Posix POSIX.2|POSIX 1003.2 मानक के बहुत करीब से अनुरूप बनाने का कारण बनता है। पोर्टेबिलिटी (कंप्यूटर साइंस) के लिए बनाई गई बैश आवरण स्क्रिप्ट को कम से कम POSIX आवरण मानक को ध्यान में रखना चाहिए। POSIX में नहीं मिली कुछ बैश विशेषताएँ हैं:


 * कुछ विस्तारित मंगलाचरण विकल्प
 * ब्रेस विस्तार
 * सरणियाँ और साहचर्य सरणियाँ
 * डबल ब्रैकेट ... विस्तारित परीक्षण निर्माण और इसका रेगेक्स मिलान
 * दोहरे कोष्ठक अंकगणित-मूल्यांकन निर्माण (केवल (( ... )); $(( ... )) पॉज़िक्स है)
 * पैरामीटर विस्तार में कुछ स्ट्रिंग-हेरफेर ऑपरेशन
 * local दायरे वाले चर के लिए
 * प्रक्रिया प्रतिस्थापन
 * बैश-विशिष्ट बिल्टिन
 * कोप्रोसेसेस
 * $युगसेकंड और $एपोक्रिअलटाइम चर

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

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

प्रक्रिया प्रबंधन
बैश आवरण में कमांड के निष्पादन के दो तरीके हैं: बैच (यूनिक्स), और समवर्ती मोड।

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

<वाक्यविन्यास लैंग = बैश> कमांड 1; कमांड2 

इस उदाहरण में, जब कमांड 1 समाप्त हो जाता है, तो कमांड 2 निष्पादित हो जाता है।

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

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

<वाक्यविन्यास लैंग = बैश> कमांड 1 और कमांड 2 

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

एक प्रक्रिया को रोका जा सकता है और टाइप करके बैश पर नियंत्रण लौटाया जा सकता है Ctrl जबकि प्रक्रिया अग्रभूमि में चल रही है। सभी प्रक्रियाओं की एक सूची, दोनों पृष्ठभूमि में और रुकी हुई, चलकर प्राप्त की जा सकती है : <वाक्यविन्यास लैंग = कंसोल> $ नौकरियां [1] - रनिंग कमांड 1 और [2] + रुका हुआ कमांड 2 

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

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

<वाक्यविन्यास लैंग = बैश> मार % 1 

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

<वाक्यविन्यास लैंग = बैश> सीडी $ कहीं और && ./do_something || प्रतिध्वनि एक त्रुटि हुई >&2 

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

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

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

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

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

यह भी देखें

 * कमांड शेल की तुलना

इस पेज में लापता आंतरिक लिंक की सूची

 * सोलारिस (ऑपरेटिंग सिस्टम)
 * यात्रा
 * भाषा (कंप्यूटर विज्ञान)
 * सी खोल
 * बहाव को काबू करें
 * पुनर्जन्म
 * हमला (कंप्यूटिंग)
 * अल्मक्विस्ट खोल
 * से
 * cygwin
 * मनमाना कोड निष्पादन
 * पर्यावरणपरिवर्ती तारक
 * चाबी दबाएं
 * मानक त्रुटि धारा
 * मानक बाहर
 * साहचर्य सरणियाँ
 * खिड़की प्रबंधक
 * पोर्टेबिलिटी (कंप्यूटर विज्ञान)

बाहरी संबंध

 * (interview with GNU Bash's maintainer, Chet Ramey)
 * (interview with GNU Bash's maintainer, Chet Ramey)