अन्य लोगों ने कहा है कि प्रश्न के परिसर, कि बॉर्न अगेन शेल डिफ़ॉल्ट और सर्वव्यापी है, सर्वथा गलत हैं।
इसके अलावा, खोल स्क्रिप्ट की व्याख्या करने के लिए बॉर्न अगेन शेल के अलावा किसी अन्य चीज का उपयोग करने के लिए वास्तव में अच्छे कारण हैं। इन कारणों उबंटू के और डेबियन की बड़ी परियोजना प्रेरित, कई वर्षों से अधिक, bashisms दूर करने के लिए और सिस्टम आरंभीकरण द्वारा चलाए जा शेल स्क्रिप्ट के रूप में कई (जो एक था बनाने के लिए बहुत प्रणाली 5 के साथ शेल स्क्रिप्ट के rc
और पैकेज स्थापना / हटाने का उपयोग करें) बॉर्न अगेन शेल के बजाय डेबियन अल्मक्विस्ट शेल।
सीधे शब्दों में कहें: द बॉर्न अगेन शेल, इंटरैक्टिव फीचर्स से भरपूर, जैसा कि है, पॉसिक्स-कंफर्टेबल शेल स्क्रिप्ट के लिए सबसे तेज शेल इंटरप्रेटर नहीं है। इसलिए यदि कोई एक शेल स्क्रिप्ट को POSIX-अनुरूप बना सकता है, तो उन्हें अधिक हल्के प्रोग्राम के साथ व्याख्या करना, जैसे डेबियन अल्मक्विस्ट शेल, किसी का सिस्टम बेहतर प्रदर्शन करेगा। (अंत में, डेबियन को अल्मोक्विस्ट शेल के लिए थोड़ा समायोजन करना पड़ा, गैर-पोसिक्स शेल निर्माणों के एक जोड़े के लिए समर्थन जोड़ने के लिए जो कि बहुत गहराई से और व्यापक रूप से एम्बेडेड थे और छुटकारा पाने के लिए बहुत उपयोगी थे।)
यह सभी का परिणाम बूटस्ट्रैप प्रदर्शन में एक प्रमुख लाभ था।
तो यहाँ विचार करने के लिए शेल के दो अलग-अलग वर्ग हैं:
- सभी आकर्षक इंटरैक्टिव विशेषताओं वाले गोले , जिन्हें खातों के डेटाबेस में उपयोगकर्ताओं के लिए इंटरैक्टिव लॉगिन गोले के रूप में कॉन्फ़िगर किया गया है।
- वे शैलें जो बहुत सारी लिपियों की शीघ्रता से व्याख्या करती हैं, जिन्हें शेल स्क्रिप्ट कार्यक्रमों द्वारा स्क्रिप्ट दुभाषियों के रूप में उपयोग किया जाता है ।
ध्यान दें कि इस बारे में "प्राथमिकता /bin/sh
" के रूप में बात करना ओवरसिंपलिंग है। डेबियन वास्तव में कम से कम दो लक्ष्य थे:
डेबियन अल्मक्विस्ट शेल, जेड शेल (POSIX मोड में), बॉर्न अगेन शेल (POSIX मोड में), MirBSD कोर्न शेल, और अन्य के रूप में उपयोग करने वाले व्यवस्थापकों के सामने /bin/sh
, या तो वहाँ था ...
… स्क्रिप्ट को यथासंभव पोर्टेबल बनाना, ताकि /bin/sh
चीजों को तोड़ने के लिए मैप किए गए स्विचिंग न हो; या
… गैर-पोर्टेबल स्क्रिप्ट बनाना स्पष्ट रूप से सही दुभाषिया कार्यक्रम को लक्षित करता है , बजाय इसके कि उस /bin/sh
नक्शे की अपेक्षा के ।
वहाँ डेबियन Almquist के लिए डिफ़ॉल्ट मानचित्रण शैल बनाने था /bin/sh
बजाय बॉर्न शैल की, ताकि उन स्क्रिप्ट थे POSIX-conformant (या, और अधिक ठीक से, डेबियन नीति मैनुअल अनुरूप) और अधिक तेजी से भाग गया।
और निश्चित रूप से एक बार इस में जाने के बाद, कोई इसे बहुत आगे ले जा सकता है; जैसे कि शेल स्क्रिप्ट और संकलित कार्यक्रमों की पसंद /bin/true
और दक्षता वाले ट्रेडऑफ़्स पर विचार करना /usr/bin/clear
। लेकिन यह इस उत्तर के दायरे से परे है, सौभाग्य से। ☺
इसमें से कोई भी बहुत नया नहीं है, न ही यूनिक्स-विशिष्ट, बिल्कुल। सदी के मोड़ से पहले, मैंने एक कमांड-लाइन दुभाषिया लिखा और प्रकाशित किया जो "इंटरैक्टिव" और "गैर-इंटरैक्टिव" दोनों प्रकार के स्वादों में आया, इसके डोको में बहुत विभाजन को समझाते हुए COMSPEC
और OS2_SHELL
पर्यावरण चर के बीच अंतर को नोट किया । इसी तरह, डेबियन के सिस्टम V में बैशमिज़ को हटाने rc
और पैकेज स्थापना / हटाने स्क्रिप्ट की चर्चा 1990 के दशक की है।
आगे की पढाई
/bin/sh
यदि आप विशिष्टbash
कार्यों का उपयोग नहीं करते हैं तो यह उपयोग करने के लिए एक अच्छा पक्ष है । एक दिन आपको अपनी एक स्क्रिप्ट का उपयोग उस सिस्टम पर करना होगा जिस पर यह स्थापित नहीं है (रिमोट सर्वर, एम्बेडेड कंप्यूटर ...)