शुरुआत के लिए, यदि आप यह अनुमान लगा सकते हैं कि बैश प्रीइंस्टॉल्ड है (जो, मेरी जानकारी के लिए आपके द्वारा सूचीबद्ध सभी सिस्टम पर मामला है), संगत होने के लिए निम्न हैशबैंग का उपयोग करें:
#!/usr/bin/env bash
यह bash
कॉन्फ़िगर करता है जो कुछ भी कॉन्फ़िगर किया जाना है, कोई फर्क नहीं पड़ता कि यह अंदर है /bin
या नहीं /usr/local/bin
।
जबकि एक विस्तृत श्रृंखला (AIX, Solaris, कई BSD जायके सहित) की अधिकांश प्रणालियों पर, bash
विभिन्न स्थानों env
में समाप्त हुई , हमेशा में समाप्त हुई /usr/bin/env
। ट्रिक, मेरी नहीं है, लेकिन बैश कुकबुक के लेखक की है।
वैसे भी, बैश आपको कुछ "आधुनिक" सुविधाओं का उपयोग करने की अनुमति देगा जो आपके जीवन को आसान बनाते हैं।
उदाहरण के लिए डबल कोष्ठक:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
पारंपरिक शेल बोलियों में रहते हुए आपको इसका सहारा लेना होगा:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
लेकिन डबल ब्रैकेट के बारे में सबसे अच्छा यह है कि वे मिलान के लिए नियमित अभिव्यक्ति की अनुमति देते हैं। बैश हैकर्स विकी उस दिशा में आप कई गुर दे देंगे।
आप वाक्यविन्यास के $((2**10))
साथ काफी सुविधाजनक अभिव्यक्तियों जैसे या अन्य अंकगणितीय अभिव्यक्तियों का उपयोग कर सकते हैं $((expression))
।
उपधाराओं के लिए बैकटिक्स का उपयोग करना ठीक है, भले ही थोड़ा पुराना हो। लेकिन $(command ...)
इनवोकेशन की नेस्टिंग क्षमताएं अधिक सुविधाजनक होती हैं क्योंकि आपको अलग-अलग सबस्क्रिप्शन स्तरों पर कई चीजों से बचना नहीं होगा।
ये हैं, लेकिन कुछ चीजें जो बैश आपको पारंपरिक आम POSIX sh
सिंटैक्स पर देती हैं।
लेकिन यदि आप शेल पर अधिक शक्ति चाहते हैं (न केवल लिपियों में), तो एक नज़र भी डालें zsh
।
/bin
और शुरू कर दिया है/usr/bin
। परिणामस्वरूप,#!/usr/bin/env <shname>
इन दिनों पोर्टेबिलिटी के लिए उपयोग करना बेहतर है ।