देखें: BASH FAQ प्रविष्टि # 28: "मैं अपनी स्क्रिप्ट का स्थान कैसे निर्धारित करूं? मैं उसी जगह से कुछ कॉन्फिग फाइल पढ़ना चाहता हूं।"
कोई भी समाधान 100% समय पर काम करने वाला नहीं है:
यह महसूस करना महत्वपूर्ण है कि सामान्य मामले में, इस समस्या का कोई हल नहीं है। किसी भी दृष्टिकोण के बारे में आपने सुना होगा, और कोई भी दृष्टिकोण जो नीचे विस्तृत होगा, उसमें खामियां हैं और वे केवल विशिष्ट मामलों में काम करेंगे। सबसे पहले और सबसे महत्वपूर्ण, पूरी तरह से अपनी स्क्रिप्ट के स्थान के आधार पर समस्या से बचने की कोशिश करें!
यदि आपको एक बहुत ही पुन: प्रयोज्य उपकरण लिखने की आवश्यकता है , तो अपनी स्क्रिप्ट के पैरामीटर के रूप में सही रास्ता लेना सबसे विश्वसनीय तरीका होने जा रहा है ।
मान लीजिए कि आपकी स्क्रिप्ट केवल कुछ निश्चित गोले से चलने वाली है, और केवल थोड़े लचीलेपन की आवश्यकता है, तो आप शायद इस व्यामोह से कुछ हद तक आराम कर सकते हैं। अपने विकल्पों को देखना अभी भी अच्छा है। ऐसे सामान्य पैटर्न हैं जो लोग उपयोग करते हैं जो विशेष रूप से समस्याग्रस्त हैं।
विशेष रूप से, अक्सर पूछे जाने वाले प्रश्न बहुत सामान्य रूप से उपयोग किए जाने वाले $0चर से बचने की सलाह देते हैं :
जो कुछ भी पढ़ता है $0वह कभी भी बुलेटप्रूफ नहीं होगा, क्योंकि $0खुद अविश्वसनीय है।
एक विकल्प के रूप में, आप $BASH_SOURCEइसके बजाय उपयोग कर सकते हैं । कुछ इस तरह:
source "${BASH_SOURCE%/*}/act.conf.sh"
इस समाधान के लिए कुछ चेतावनी भी हैं। विभिन्न समाधानों के बीच ट्रेड-ऑफ देखने के लिए FAQ पृष्ठ देखें। वे उन मामलों के cdसाथ संयोजन में अनुशंसा $BASH_SOURCEकरते हैं जहां यह आपके लिए काम करेगा, क्योंकि जब आप ठीक से विस्तार करने में विफल हो जाते हैं तो आपको एक त्रुटि की स्थिति मिलती है।
readlink। यहाँ पोस्ट किए गए प्रश्न को खोजने के लिए कीवर्ड निर्धारित करने में सक्षम नहीं था ....