2013-07-12 8 views
7

क्षमा करें, शीर्षक थोड़ा परेशान हो सकता है, लेकिन मुझे कुछ भी बेहतर नहीं पता था। वैसे भी, मैं एक बैश स्क्रिप्ट फ्रीबीडीडी, ओपनबीएसडी और लिनक्स पर इसे संशोधित किए बिना काम करना चाहता हूं, लेकिन बैश लिनक्स और बीएसडी में एक ही स्थान पर स्थित नहीं है।मैं इसे बिना संशोधित फ्रीबीएसडी, ओपनबीएसडी और लिनक्स पर काम कर रहे बैश स्क्रिप्ट कैसे प्राप्त करूं?

तो, अगर मैं #!/bin/bash लिखता हूं तो यह बीएसडी पर काम नहीं करेगा, क्योंकि बैश खोल /usr/local/bin/bash में स्थित है। क्या इस स्क्रिप्ट को दोनों पर काम करने का कोई समाधान है?

या क्या मुझे वास्तव में अलग-अलग पथों के साथ दो स्क्रिप्ट भेजने की ज़रूरत है ...?

+3

यह भी ध्यान दें कि फ्रीबीएसडी सिस्टम पर * कोई गारंटी नहीं है * कि बैश बिल्कुल उपलब्ध होगा, यह एक वैकल्पिक इंस्टॉल है ... – fvu

उत्तर

12

शेबैंग (#!/usr/bin/env bash) में env का उपयोग करके स्क्रिप्ट ओएस अज्ञेयवादी बनाना चाहिए।

1

मुझे #!/usr/bin/env bash का उपयोग करने के बारे में उत्तर पसंद है यह एक दिलचस्प और उत्कृष्ट उत्तर है, लेकिन यह केवल तभी काम करेगा जब बैश पथ में है।

एक और विकल्प #!/bin/sh का उपयोग करना हो सकता है जो सबसे सार्वभौमिक रूप से संगत खोल स्थान है। फिर, स्क्रिप्ट sh में कुछ करें, जैसे चेक करें कि bash स्थापित है (यदि bash भी इंस्टॉल है)। एक और विकल्प हो सकता है कि bash दोनों स्थानों पर मौजूद हो। एक और स्थापना करना ओवरकिल की तरह लग सकता है, लेकिन यह लक्ष्य एक कठिन लिंक बनाने के रूप में पूरा किया जा सकता है ताकि वास्तव में दोनों स्थानों में बैश वास्तव में मौजूद हो।

संबंधित मुद्दे