Um in einem script den Pfad zum Verzeichnis von dem das Script aufgerufen wird gibt es diese Funktion:
<span class="keys"> ${BASH_VERSINFO[0]} -le 2 </span> && echo 'The BASH_SOURCE array variable is only available for Bash 3.0 and higher!' && exit 1
if [ "${BASH_SOURCE[0]}" != "${0}" ]; then
# echo "script ${BASH_SOURCE[0]} is running sourced ..."
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}"); pwd -P)"
else
# echo "script ${0} is NOT running sourced ..."
SCRIPT_PATH="$(cd $(dirname "${0}"); pwd -P)"
fi |
Falls man nun Beispielsweise ein script in /home/user/bin/test.sh hat und die obige Funktion in diesem Script aufruft zeigt $SCRIPT_PATH immer auf: /home/user/bin, egal ob man dieses Script im bin-Verzeichnis aufruft (./test.sh) oder absolut (/home/user/bin/test.sh).
Dies ist besonders nützlich, wenn man innerhalb des scriptes weitere scripts im selben Verzeichnis wie das script aufruft und dies nicht mit absoluter Pfadangabe machen will (da sich das script-Verzeichnis verschieben könnte).