बॉर्न शैल भाषा की सभी विविधताएं आधुनिक स्क्रिप्टिंग भाषाओं जैसे पर्ल, पायथन, रूबी, नोड.जेएस और यहां तक कि (यकीनन) Tcl की तुलना में बहुत भयानक हैं। यदि आपको थोड़ा सा जटिल भी करना है, तो आप एक शेल स्क्रिप्ट के बजाय उपरोक्त में से किसी एक का उपयोग करने पर लंबे समय तक खुश रहेंगे।
शेल भाषा का एक और एकमात्र लाभ अभी भी उन नई भाषाओं के ऊपर है कि कुछ कॉलिंग खुद /bin/sh
को उस चीज़ पर मौजूद होने की गारंटी है जो यूनिक्स होने का अधिकार देता है। हालाँकि, कि कुछ भी POSIX- अनुरूप नहीं हो सकता है; कई विरासत के मालिकाना यूनिक्स ने यूनिक्स 95 (हां, यूनिक्स 95, बीस साल पहले और गिनती) द्वारा मांगे गए परिवर्तनों से पहले लागू की गई भाषा /bin/sh
और डिफ़ॉल्ट पीएटीएच में उपयोगिताओं को फ्रीज कर दिया। वहाँ Unix95 का एक सेट हो सकता है, या यहाँ तक कि POSIX.1-2001 अगर आप भाग्यशाली हैं, एक निर्देशिका में उपकरण नहीं डिफ़ॉल्ट पथ पर (जैसे ), लेकिन वे मौजूद करने के लिए गारंटी नहीं है।/usr/xpg4/bin
हालाँकि, बैश की तुलना में पर्ल की मूल बातें मनमाने ढंग से चयनित यूनिक्स इंस्टॉलेशन पर मौजूद होने की अधिक संभावना है। (पर्ल की मूल बातें "मेरा मतलब /usr/bin/perl
है कि मौजूद है और कुछ है , संभवतः काफी पुराना है, पर्ल 5 का संस्करण, और यदि आप भाग्यशाली हैं कि मॉड्यूल के सेट जो दुभाषिया के उस संस्करण के साथ भेज दिए गए हैं भी उपलब्ध हैं।"
इसलिए:
यदि आप कुछ ऐसा लिख रहे हैं जिसमें हर जगह काम करना है जो कि यूनिक्स होने के लिए है (जैसे कि "कॉन्फ़िगर" स्क्रिप्ट), तो आपको उपयोग करने की आवश्यकता है #! /bin/sh
, और आपको किसी भी एक्सटेंशन का उपयोग करने की आवश्यकता नहीं है। आजकल मैं इस परिस्थिति में POSIX.1-2001-आज्ञाकारी खोल लिखूंगा, लेकिन अगर किसी ने जंग खाए हुए लोहे के लिए समर्थन मांगा तो मैं POSIXism बाहर निकालने के लिए तैयार रहूंगा।
लेकिन अगर आप कुछ ऐसा नहीं लिख रहे हैं , जिसमें हर जगह काम करना है, तो जिस क्षण आप किसी भी बशीवाद का उपयोग करने के लिए ललचाते हैं, आपको रुक जाना चाहिए और इसके बजाय एक बेहतर स्क्रिप्टिंग भाषा में पूरी बात को फिर से लिखना चाहिए। आपका भविष्य स्वयं आपको धन्यवाद देगा।
(तो जब है - स्मार्ट टैब-पूरा होने और फैंसी संकेतों प्रदान करने के लिए जैसे ही बैश इंटरैक्टिव वातावरण का विस्तार करने के लिए यह बैश एक्सटेंशन का उपयोग करने उचित पहले के आदेश करने के लिए:: कभी नहीं दूसरा आदेश के लिए?।।)
#!/bin/sh
और जो मूल शेल प्रदान किया गया है, उसके अलावा किसी और चीज का उपयोग न करें।