यदि आप bash (यानी स्क्रिप्ट के साथ शुरू होता है #!/bin/bash) का उपयोग कर रहे हैं , तो आप स्क्रिप्ट का फ़ाइल नाम प्राप्त करने के लिए $ BASH_SOURCE का उपयोग कर सकते हैं। उस से, आप उस निर्देशिका को प्राप्त कर सकते हैं जो इसमें है:
mydir="$(dirname "$BASH_SOURCE")"
... और फिर स्क्रिप्ट के सापेक्ष फ़ाइलें खोजने के लिए इसका उपयोग करें, जैसे cp "$mydir/fileInTheSameFolder" /tmp(और कृपया हमेशा इसके चारों ओर दोहरे उद्धरणों का उपयोग करें, जैसा कि मैंने यहां किया था)।
ध्यान दें कि यह एक सापेक्ष पथ हो सकता है; उदाहरण के लिए, यदि स्क्रिप्ट को एक इंटरेक्टिव शेल से चलाया गया था, तो ./scriptname.commandयह बस "" के रूप में सामने आएगा। यह तब तक समस्या नहीं होनी चाहिए जब तक कि स्क्रिप्ट सीडी की कहीं और न हो, लेकिन यदि आपको पूर्ण पथ की आवश्यकता है तो आप इसके बजाय इसका उपयोग कर सकते हैं:
mydir="$(cd "$(dirname "$BASH_SOURCE")" && pwd)" || {
echo "Error getting script directory" >&2
exit 1
}
या, cdस्क्रिप्ट की शुरुआत में स्क्रिप्ट की निर्देशिका के लिए बस सकता है :
cd "$(dirname "$BASH_SOURCE")" || {
echo "Error getting script directory" >&2
exit 1
}