Die meisten Antworten geben Ihnen den aktuellen Pfad und sind kontextsensitiv. Um Ihr Skript von einem beliebigen Verzeichnis aus auszuführen, verwenden Sie das folgende Snippet.
DIR="$( cd "$( dirname "$0" )" && pwd )"
Durch Wechseln der Verzeichnisse in einer Subshell können wir dann pwd
aufrufen und erhalte unabhängig vom Kontext den korrekten Pfad des Skripts.
Sie können dann $DIR
verwenden als "$DIR/path/to/file"
Das aktuelle (Anfangs-)Verzeichnis des Shell-Skripts ist das Verzeichnis, aus dem Sie das Skript aufgerufen haben.
Wie bereits erwähnt, ist der Speicherort der Ort, von dem aus das Skript aufgerufen wurde. Wenn Sie möchten, dass das Skript auf seinen Installationsort verweist, ist dies ganz einfach. Unten ist ein Ausschnitt, der das PWD und das installierte Verzeichnis ausdruckt:
#!/bin/bash
echo "Script executed from: ${PWD}"
BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"