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).