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

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

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

इतिहास
रिचर्ड स्टालमैन के पूर्व डेवलपर द्वारा की जा रही प्रगति की कमी से असंतुष्ट होने के बाद। ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर) ने 10 जनवरी 1988 को कंप्यूटर प्रोग्रामिंग बैश शुरू किया, स्टॉलमैन और फ्री सॉफ्टवेयर फाउंडेशन (FSF) ने फ्री आवरण पर विचार किया जो उपस्तिथ आवरण स्क्रिप्ट को BSD और GNU कोड से निर्मित पूरी तरह से मुक्त प्रणाली के लिए रणनीतिक रूप से चला सकता है कि यह उन कुछ परियोजनाओं में से था जिसे उन्होंने खुद वित्त पोषित किया था, जिसमें फॉक्स ने काम किया था। एफएसएफ का एक कर्मचारी फ़ॉक्स ने बैश को बीटा संस्करण .99 के रूप में 8 जून 1989 को रिलीज़ किया, और 1992 के मध्य कुछ समय तक प्राथमिक अनुरक्षक बने रहे और 1994 के मध्य में, जब उन्हें एफएसएफ से हटा दिया गया और उनकी जिम्मेदारी दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई। तब से, बैश लिनक्स के उपयोगकर्ताओं के बीच अब तक का सबसे लोकप्रिय आवरण बन गया है, जो उस ऑपरेटिंग प्रणाली के विभिन्न वितरणों पर डिफ़ॉल्ट इंटरैक्टिव आवरण बन गया है।  (चूँकि अल्मक्विस्ट आवरण डिफ़ॉल्ट स्क्रिप्टिंग आवरण हो सकता है) और Apple के macOS पर अक्टूबर 2019 में MacOS कैटालिना से पहले रिलीज़ हुआ।  बैश को माइक्रोसॉफ़्ट विंडोज़ में भी पोर्ट किया गया है और साइगविन और मिनजीडब्ल्यू के साथ वितरित किया गया है, डीजेजीपीपी प्रोजेक्ट द्वारा डीओएस को, नोवेल नेटवेयर को, जीएनवी प्रोजेक्ट द्वारा ओपन VMS को, ArcaOS को, और Android (ऑपरेटिंग सिस्टम) के लिए विभिन्न टर्मिनल अनुकरण अनुप्रयोगों के माध्यम से वितरित किया गया है।

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

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

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

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

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

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

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

<वाक्यविन्यास लैंग = कंसोल> $ इको ए {पी, सी, डी, बी} ई एप इक्का अडे अबे $ इको {ए, बी, सी} {डी, ई, एफ} विज्ञापन एई एएफ बीडी बीएफ सीडी सीई सीएफ  उपयोगकर्ताओं को पोर्टेबल शेल स्क्रिप्ट में ब्रेस एक्सपेंशन का उपयोग नहीं करना चाहिए, क्योंकि बॉर्न शेल समान आउटपुट नहीं देता है।

<वाक्यविन्यास लैंग = कंसोल> $ # एक पारंपरिक खोल एक ही आउटपुट का उत्पादन नहीं करता है $ /bin/sh -c 'echo a{p,c,d,b}e' ए {पी, सी, डी, बी} ई 

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

<वाक्यविन्यास लैंग = बैश> एलएस *। {जेपीजी, जेपीईजी, पीएनजी}   # expands to *.jpg *.jpeg *.png  जिसके बाद, # वाइल्डकार्ड संसाधित किए जाते हैं इको *। {पीएनजी, जेपी {ई,} जी} # इको ​​केवल विस्तार दिखाएं - # और ब्रेसिज़ में ब्रेसिज़ संभव हैं। 

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

<वाक्यविन्यास लैंग = कंसोल> $ प्रतिध्वनि {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}.txt file1.txt file2.txt file3.txt file4.txt $ इको {ए..ई} ए बी सी डी ई $ प्रतिध्वनि {1..10..3} 1 4 7 10 $ प्रतिध्वनि {a..j..3} ए डी जी जे 

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

<वाक्यविन्यास लैंग = कंसोल> $ प्रारंभ = 1; अंत = 10 $ गूंज {$शुरू..$अंत} # मूल्यांकन आदेश के कारण विस्तार करने में विफल रहता है {1..10} $ eval प्रतिध्वनि {$शुरू..$अंत} # चर विस्तार तब होता है जिसके परिणामस्वरूप स्ट्रिंग का मूल्यांकन किया जाता है 1 2 3 4 5 6 7 8 9 10 

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

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

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

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

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


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

यदि कोड का एक टुकड़ा ऐसी सुविधा का उपयोग करता है, तो इसे बैशिज़्म कहा जाता है - पोर्टेबल उपयोग के लिए एक समस्या। डेबियन का 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)