In einem Skript komme ich auf $0
den möglichen relativen Pfad dazu. Um es in absolut umzuwandeln, habe ich diese Lösung gefunden, die ich nicht verstehe:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
Mein Problem ist die Magie in ${0%/*}
und ${0##*/}
. Es sieht so aus, als ob der erstere den Verzeichnisnamen und der letztere den Dateinamen extrahiert. Ich verstehe nur nicht, wie.
dirname
util ist hier nützlich.
BASH_SOURCE
sei besser als $0
, da $0
der eingegebene Befehl des Benutzers angegeben wird, der möglicherweise nicht das aktuell ausgeführte Skript ist.
readlink -f $0
Sie den kanonischen Pfad abrufen.