क्या डैश, ऐश और श स्क्रिप्ट 100% संगत हैं?


16

मैं जानना चाहता था कि क्या डैश, ऐश और श के लिए लिखी गई स्क्रिप्ट 100% संगत हैं?

क्या डैश या ऐश, या सिंटैक्स परिवर्तन में कोई अतिरिक्त सुविधाएँ हैं?

मैंने जो सुना, उससे राख का सीधा वंशज है।


ऐश बैश का एक धारीदार रूप है
जो

4
स्रोत? मैंने देखा कि कुछ भी नहीं कहा गया है कि राख का संबंध बाश से है
user1115057

क्यों लोग हर तरह के गोले बनाने के बजाय सिर्फ थपकी देने की हिमाकत करते हैं, जो मुझे हर समय परेशान करता है। यदि आप वास्तव में जानना चाहते हैं, तो मैनुअल पढ़ें, उदाहरण के लिएman ash
daisy

2
सही है, यह मार से उतरा नहीं है। यह कहना अधिक सटीक होगा कि वे श (मूल बोर्न शेल) से वंशज हैं, लेकिन यह पूरी तरह से सही भी नहीं है।
ज़्लातको

आप यह checkbashismsजांचने के लिए उपयोगिता का उपयोग कर सकते हैं कि आपकी स्क्रिप्ट POSIX अनुरूप है।
donothingsuccessfully

जवाबों:


18

संक्षिप्त उत्तर नहीं है, वे 100% संगत नहीं हैं।

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

साथ ही, सटीक होने के लिए बीएसडी से लिनक्स तक - या के dashवंशज की तरह है ash। और उन सभी के वंशज या अलग-अलग कार्यान्वयन होने चाहिए sh। वास्तव में, shअधिकांश प्रणालियों पर सिर्फ एक सिमिलिंक है bash, dashया कुछ और। POSIX अनुपालन क्या मायने रखता है - और जब आप मानकों के अनुसार स्क्रिप्ट लिखते हैं, तो आप समस्याओं में नहीं चलेंगे।

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


लेकिन स्क्रिप्ट के उपयोग के लिए, वे संगत हैं?
user1115057

और POSIX अनुपालन के बारे में, भले ही मैं उस मानक का पालन करता हूं, अगर कोई स्क्रिप्ट बैश के लिए लिखी जाती है, तो मुझे नहीं लगता कि यह किसी भी श या इसके वंशज पर चलेगा
user1115057

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

श या ऐश या डैश के साथ बैश का उपयोग करने का इरादा नहीं है। वे अस्पष्ट विशेषता क्या हैं?
user1115057

1
बैश के कई नए फीचर्स POSIX के अतिरिक्त हैं, इसलिए यह संभावना बढ़ जाती है कि यदि आप उनका उपयोग कर रहे हैं, तो आप असंगत कोड लिखेंगे। IIRC यहां तक ​​कि [[]] निर्माण भी नहीं है। इसके अलावा, सावधान रहें कि यदि आप शुद्ध शेल स्क्रिप्ट नहीं लिख रहे हैं, तो टूल में अंतर भी खेलने में आता है (sed, grep, awk ... के विभिन्न संस्करण)।
lynxlynxlynx

1

यह उल्लेख किया जाना चाहिए कि कुछ प्रणालियों पर, विशेष रूप से डेबियन, / बिन / राख उपलब्ध नहीं है:

$ type ash dash
bash: type: ash: not found
dash is /bin/dash

2
उनके पास व्यस्त बॉक्स राख हो सकता है।
मुरु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.