मेरे द्वारा लिखा गया अधिकांश कोड PHP में है। मैंने हाल ही में शेल स्क्रिप्टिंग सीखना शुरू किया है। मेरे पास जितने संसाधन और ट्यूटोरियल हैं, उनमें से अधिकांश बैश के लिए विशिष्ट हैं। कुछ बश्शियों के बारे में चेतावनी देते हैं और कुछ नहीं। मैं यहां और स्टैक ओवरफ्लो पर बहुत कुछ पढ़ रहा हूं।
जब भी कोई उत्तर बशीट का उपयोग करता है , तो कोई व्यक्ति अनिवार्य रूप से कहने के लिए टिप्पणी करेगा:
आपको यहाँ <bashism सम्मिलित करें> का उपयोग नहीं करना चाहिए। यह पोर्टेबल नहीं है।
यह तब भी होता है जब प्रश्न के साथ टैग किया गया था bash। मेरे लिए, यह एक PHP प्रोग्रामर को बताने जैसा है कि वे PHP 5 में नए कोड का उपयोग नहीं करना चाहिए क्योंकि इसका उपयोग PHP 4 के साथ नहीं किया जा सकता है। या किसी को बता रहे हैं कि उन्हें Mac के लिए कुछ नहीं लिखना चाहिए क्योंकि इसका उपयोग नहीं किया जा सकता है विंडोज पर।
जब मैं PHP में लिखता हूं, मैं एक न्यूनतम आवश्यकता चुनता हूं और मैं आगे- असंगत कोड लिखता हूं । मैं इसे पिछड़े- असंगत बनाने के बारे में चिंता नहीं करता ।
अगर मैं #!/bin/bash
शेबबैंग के रूप में उपयोग करता हूं , तो मुझे बशीज़ का उपयोग क्यों नहीं करना चाहिए? मैं धारणा है कि कुछ लोगों को बस की तरह पाने के लिए शुरू कर बैश बस की खातिर bashisms (यमक इरादा)।
लोग अक्सर उपयोग करते हैं bash
और shell
परस्पर विनिमय करते हैं - शायद इस तथ्य के कारण कि कई प्रणालियों पर बैश डिफ़ॉल्ट शेल है। इसलिए मैं यह टिप्पणी करने के लिए समझ सकता हूं कि चेतावनियों में कोड का उपयोग किया गया है, लेकिन मैं इस निहितार्थ को नहीं समझता कि उनका उपयोग करना गलत है।
जाहिर है, अगर मैं निजी उपयोग के लिए कड़ाई से स्क्रिप्ट लिख रहा हूं तो मैं इसे जिस भी भाषा में चाहता हूं, लिख सकता हूं। लेकिन मुझे लगता है कि मेरे द्वारा लिखे गए कुछ कोड दूसरों के लिए उपयोगी हो सकते हैं।
मैंने पोस्ट करने से पहले अपने प्रश्न का उत्तर खोजने की कोशिश की। मैं के बारे में जानकारी का एक बहुत कुछ पाया कैसे परीक्षण करने के लिए पोर्टेबिलिटी के लिए, लेकिन के बारे में कुछ भी नहीं मिला जब यह महत्वपूर्ण है ऐसा करने के लिए।
तो, पोर्टेबल स्क्रिप्ट लिखना कब महत्वपूर्ण है?
उदाहरण के लिए,
- किस प्रकार की लिपियों को यथासंभव पोर्टेबल होना चाहिए?
- ऐसे सिस्टम कितने सामान्य हैं जिनमें बैश स्थापित नहीं है?
- यदि सिस्टम ने बैश स्थापित किया है, तो क्या इसमें खोज और अन्य उपयोगिताओं का GNU संस्करण भी होगा ?
bash
अकेले टैग किया गया हो, तो कोई टिप्पणी करता है "यह बैशवाद है और पोर्टेबल नहीं है"। जब मैं एक सवाल का जवाब देता हूं जो टैग किया जाता है C
, तो मुझे परवाह नहीं है कि यह पोर्टेबल है Java
या नहीं।
bash
बताना हमेशा अच्छा लगता है कि यह एक विशिष्ट विशेषता है, और पोर्टेबल नहीं है, जैसा कि मैं इंगित करता हूं कि कुछ उपयोगिता के लिए एक GNU विशिष्ट एक्सटेंशन का उपयोग किया जा रहा है (भले ही प्रश्न को लिनक्स के रूप में टैग किया गया था)। मैंने कभी किसी को यह कहते हुए नहीं देखा "यह बैशवाद है और आपको इसका उपयोग कभी नहीं करना चाहिए"।