मैंने इस स्थान पर सिफारिशों सहित कई स्थानों पर देखा है ( वरीयता में बैश शेबंग क्या है? ), #!/usr/bin/env bash
वरीयता में उपयोग करने के लिए #!/bin/bash
। मैंने भी देखा है कि एक व्यक्ति ने सुझाव देते हुए #!/bin/bash
कहा कि यह गलत था और ऐसा करने से कार्यक्षमता खो जाएगी।
सभी ने कहा, मैं कसकर नियंत्रित परीक्षण वातावरण में बैश का उपयोग करता हूं जहां संचलन में प्रत्येक ड्राइव अनिवार्य रूप से एकल मास्टर ड्राइव का क्लोन है। मैं पोर्टेबिलिटी के तर्क को समझता हूं, हालांकि यह मेरे मामले में जरूरी नहीं है। क्या #!/usr/bin/env bash
विकल्प को पसंद करने का कोई और कारण है और पोर्टेबिलिटी को एक चिंता का विषय मान लेना, क्या इसका उपयोग कार्यक्षमता को तोड़ सकता है?
env
पर स्थित नहीं हो सकता है /usr/bin
। शेबांग टिप्पणी पूरी तरह से एक बुरा विचार है IMHO। यदि आपकी डिफ़ॉल्ट स्क्रिप्ट दुभाषिया शेबंग टिप्पणियों को संभालती नहीं है, तो यह केवल एक टिप्पणी है। हालाँकि, यदि आप जानते हैं कि स्क्रिप्ट दुभाषिया शेबंग टिप्पणियों को संभाल सकता है, और आप को पता चल सकता है, कि कोई रास्ता नहीं है, तो इसके पूर्ण पथ का उपयोग करने के लिए इसे लागू न करने का कोई कारण नहीं है जब तक कि मार्ग बहुत लंबा (संभावनाहीन) नहीं है, या आप संभवतः स्क्रिप्ट को पोर्ट कर सकते हैं एक ऐसी प्रणाली जिसमें bash / bin में स्थित नहीं है। फिर, मेरे द्वारा पूर्व में उल्लिखित कैविएट उस मामले में लागू होते हैं क्योंकि इसमें पोर्टेबिलिटी शामिल है।
/etc
या /bin/sh
। bash
सिस्टम जैसे अधिकांश यूनिक्स के लिए एक ऐड-ऑन है। यह केवल लिनक्स है जहां होने bash
की गारंटी है /bin
और सबसे अधिक संभावना भी है /bin/sh
। चूंकि लिनक्स बहुत से लोगों के लिए आधुनिक डी तथ्य यूनिक्स बन गया है, इसलिए तथ्य यह है कि लिनक्स के अलावा अन्य सिस्टम मौजूद हो सकते हैं। नीचे मेरे अपने जवाब में मैंने लिनक्स को ग्रहण किया क्योंकि आपने कहा था bash
। मैंने जितने भी BSD बॉक्स के साथ काम किया है, उनमें से एक भी स्थापित नहीं किया है।
/bin/bash
। मूलभूत रूप से बैश स्थापित नहीं है। यदि आप यह चाहते हैं, तो आपको करना होगा pkg install bash
। एक बार स्थापित होने के बाद यह स्थित है /usr/local/bin/bash
। /bin/bash
OpenBSD पर कुछ भी स्थापित नहीं है । #!/bin/bash
त्रुटि का एक गड़बड़ी, और #!/usr/bin/env bash
सफल होगा।