ऐसे कई कार्यक्रम हैं जो की भाषा को लागू करते हैं /bin/sh
। उबंटू पर, /bin/sh
पानी का छींटा है, जिसे तेजी से डिज़ाइन किया जाता है, थोड़ी मात्रा में मेमोरी का उपयोग करने के लिए, और न्यूनतम अपेक्षित से अधिक समर्थन नहीं करता है /bin/sh
। आरएचईएल पर, /bin/sh
बैश है, जो धीमा है और अधिक मेमोरी का उपयोग करता है लेकिन इसमें अधिक विशेषताएं हैं। इन विशेषताओं में से ==
एक [
सशर्त सिंटैक्स के लिए ऑपरेटर है । डैश सपोर्ट करता है [
, जो एक बेसिक श फीचर है, लेकिन इसमें ==
ऑपरेटर नहीं है जो बैश (और ksh और zsh) एक्सटेंशन है।
आप अपने सिस्टम को बैश का उपयोग करने के लिए स्विच कर सकते हैं। उबंटू पर, /bin/sh
एक प्रतीकात्मक लिंक है dash
। आप bash
इसके बजाय एक प्रतीकात्मक लिंक बना सकते हैं । डेबियन और उबंटू (और डेरिवेटिव) के वर्तमान संस्करण इसे डैश का इंस्टॉलेशन विकल्प बनाते हैं। इसे बदलने के लिए, भागो
sudo dpkg-reconfigure dash
और जवाब "हाँ" के रूप में पानी का छींटा /bin/sh
या "नहीं" को दफनाने के लिए स्विच करने के लिए रखें।
आप के रूप में बैश रख सकते हैं /bin/sh
, लेकिन यह आपके सिस्टम को थोड़ा धीमा कर देगा। यह भी बोधगम्य है कि कुछ सिस्टम स्क्रिप्ट बैश के साथ असंगत है, हालांकि यह संभावना नहीं है क्योंकि बैश ज्यादातर डैश का सुपरसेट है।
उन वितरणों के लिए जिनके पास कार्यान्वयन के बीच चयन करने के लिए कोई इंटरफ़ेस नहीं है /bin/sh
, यहाँ कैसे bash पर स्विच किया जाए।
sudo ln -s bash /bin/sh.bash
sudo mv /bin/sh.bash /bin/sh
एक टर्मिनल खुला रखें और जांचें कि आप sh
उसके बाद भी कुछ स्क्रिप्ट चला सकते हैं । यदि आप इस कमांड को गड़बड़ करते हैं, तो यह आपके सिस्टम को अनुपयोगी बना देगा। (वैसे, कारण मैं कई आदेशों से ऊपर के बजाय सीधा दिखने का इस्तेमाल किया sudo ln -sf bash /bin/sh
है कि ln -sf
परमाणु नहीं है। वैसे संभावना नहीं मामले आपके कंप्यूटर इस आपरेशन के दौरान दुर्घटनाग्रस्त हो गया है, तो आप बचाव मीडिया से बूट करने के लिए आवश्यकता होगी यह बहाल करने के लिए। इसके विपरीत, mv
परमाणु है।)
के रूप में पानी का छींटा बहाल करने के लिए /bin/sh
:
sudo ln -s dash /bin/sh.dash
sudo mv /bin/sh.dash /bin/sh
ध्यान दें कि यदि /bin/bash
आपके वितरण में sh डिफ़ॉल्ट रूप से है, तो डैश पर स्विच करने से स्क्रिप्ट विफल हो सकती है, क्योंकि डैश में डैश की तुलना में कई अधिक विशेषताएं हैं। बैश स्क्रिप्ट के साथ शुरू होना चाहिए #!/bin/bash
, और स्क्रिप्ट के साथ शुरू होने के #!/bin/sh
लिए बैश-विशिष्ट सुविधाओं का उपयोग नहीं करना चाहिए, लेकिन बश के साथ जहाज का वितरण स्क्रिप्ट /bin/sh
में बैश-विशिष्ट सुविधाओं का उपयोग कर सकता #!/bin/sh
है जो उस वितरण के लिए विशिष्ट हैं (यह तब तक ठीक है जब तक कि कोई उम्मीद नहीं है कि उपयोगकर्ता के रूप में पानी का छींटा करने के लिए स्विच कर सकते हैं /bin/sh
और कोई उम्मीद नहीं है कि ये स्क्रिप्ट दूसरे वितरण पर काम करते हैं)।
==
जो होनी चाहिए=
। वह, और वह चर विस्तार दोगुना होना चाहिए।