Wenn man Skripte über den absoluten Pfad aufruft, müssen alle Aufrufe innerhalb des Skriptes ebenfalls absolut sein. Ansonsten funktioniert der Aufruf nur, sofern man zunächst in das Skriptverzeichnis wechselt und das Skript von dort ausführt. Je nach Anwendungszweck kann das passabel sein. Doch besser ist es, diesen Anwendungsfall direkt zu bedenken. Hierfür benötigt man nur den Pfad des Skriptes, der jeglichen Aufrufen vorangestellt wird. Dann spielt es keine Rolle, ob man sich im Arbeitsverzeichnis befindet oder nicht.
Folgender Artikel soll dies für die Linux-Bash zeigen, aber auch Batch-Skripte für Windows. Im Beispiel verwenden wir eine ausführbare Datei ffmpeg, die sich im Ordner des jeweiligen Skriptes befindet.
Skript-Pfad unter Linux Bash ermitteln
Unter Linux liefert uns dirname „$0“ den Ordnerpfad zum aktuellen Skript.
#!/bin/bash
cwd=$(dirname "$0")
${cwd}/ffmpeg
Skript-Pfad unter Windows Batch ermitteln
Bei Windows Batch wird es etwas kryptischer. Hier führt uns die Variable %~dp0 zum Ziel.
@echo "Check ffmpeg version"
@set cwd=%~dp0
%cwd%ffmpeg -version
pause