tl; डॉ। script=$(readlink -e -- "${BASH_SOURCE}")
(स्पष्ट रूप से बैश के लिए)
$BASH_SOURCE
परीक्षण के मामलों
फ़ाइल दी गई /tmp/source1.sh
echo '$BASH_SOURCE '"(${BASH_SOURCE})"
echo 'readlink -e $BASH_SOURCE'\
"($(readlink -e -- "${BASH_SOURCE}"))"
source
विभिन्न शिष्टाचार में फ़ाइल
source
से /tmp
$> cd /tmp
$> source source1.sh
$BASH_SOURCE (source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
$> source ./source1.sh
$BASH_SOURCE (./source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
$> source /tmp/source1.sh
$BASH_SOURCE (/tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
source
से /
cd /
$> source /tmp/source1.sh
$0 (bash)
$BASH_SOURCE (/tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
source
विभिन्न रिश्तेदार रास्तों से /tmp/a
और/var
$> cd /tmp/a
$> source ../source1.sh
$BASH_SOURCE (../source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
$> cd /var
$> source ../tmp/source1.sh
$BASH_SOURCE (../tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)
के बारे में $0
सभी मामलों में, यदि स्क्रिप्ट में कमांड जोड़ी गई थी
echo '$0 '"(${0})"
फिर source
स्क्रिप्ट हमेशा छपी
$0 (bash)
हालाँकि , यदि स्क्रिप्ट चलाई गई थी , जैसे
$> bash /tmp/source1.sh
तब $0
स्ट्रिंग मान होगा /tmp/source1.sh
।
$0 (/tmp/source1.sh)
$BASH_SOURCE (/tmp/source1.sh)
readlink -e $BASH_SOURCE (/tmp/source1.sh)