Script-Pfad ermitteln

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.