Ich möchte den absoluten Dateinamen der aktuell ausgeführten Skriptdatei abrufen. Links sollten auch aufgelöst werden.
Unter Linux scheint das so zu sein:
$(readlink -mn "$0")
readlink
scheint aber unter Mac OS X ganz anders zu funktionieren.
Ich habe gelesen, dass dies mit getan wird
$(realpath $0)
in BSD funktioniert das aber auch nicht. Mac OS X hat nicht realpath
.
Irgendeine Idee?
Antworten:
Ich betrüge und benutze Perl für genau das:
Man könnte meinen, ich würde nur das gesamte Skript in Perl schreiben, und das tue ich oft, aber nicht immer.
quelle
quelle
unset -v CDPATH
vor der CD zu schreiben, da CD unerwünschte Ausgaben verursachen kann, wenn CDPATH eingestellt ist.scriptDir=$(unset -v CDPATH; cd "$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE)")" && pwd -P)
Dies verarbeitet Kombinationen von Symlinks und funktioniert für Dateien und Ordner:
Aber es unterstützt nicht realpath's --relative-to. Dies würde die hier beschriebene Konvertierung erfordern .
quelle
Ein anderer Ansatz:
quelle