TLDR; Die Lösung:

Du kombinierst die Spezial-Variable $0 mit den Tools dirname und pwd.

Beispiel

#!/bin/sh

SCRIPTPATH=$(cd `dirname $0` && pwd)

echo $SCRIPTPATH

Ausführlicher - so funktionierts:

In der Spezial-Variable $0 ist der Dateiname des Skripts gespeichert, das gerade ausgefürt wird.

Für das Script /Users/jk/bin/test.sh

#!/bin/sh

echo $0

lautet die Ausgabe also

/Users/jk/bin/test.sh

dirname gibt den Verzeichnisteil aus dem kompletten Pfad zurück (siehe man dirname) und mit cd wechseln wir in dieses Verzeichnis. Was an dieser Stelle identisch ist, mit dem Verzeichnis, in dem das Skript liegt, das gerade ausgeführt wird.

Ist die Befehlsfolge

cd `dirname $0`

erfolgreich führen wir mit && noch ein pwd (aktuelles Verzeichnis ausgeben) aus und speichern die Ausgabe in der Variable SCRIPTPATH.

Und damit haben wir das gewünschte Ergebnis. 😏