Archiv verlassen und diese Seite im Standarddesign anzeigen : bash-script: eigene Position im Dateisystem erfragen?
McFraggle
15-12-2007, 11:58
Hallo!
Weiß jemand, ob es in einem Bash-Script eine Möglichkeit gibt (z.B. über eine spezielle Variable), den eigenen Pfad des Scriptes festzustellen?
daswaldhorn
15-12-2007, 19:37
Hallo,
suchst du pwd -- print working directory?
Grüße, Carsten
suchst du pwd -- print working directory?
Das liefert Dir den Pfad, in dem Du beim Aufruf eines Scripts stehst, nicht den Pfad des Scripts. Für letzteren gibt es folgende Möglichkeiten:
1. Das Script wird mit einem absoluten Pfad aufgerufen. Dann kannst Du den Pfad mit SCRIPT_PATH=`dirname $0` im Script ermitteln.
2. Das Script wird mit einem relativen Pfad aufgerufen. Dann kriegst Du den Pfad mittels SCRIPT_PATH=`pwd`/`dirname $0` raus.
3. Das Script wird ohne Pfad aufgerufen. Dann liegt es im Suchpfad ($PATH) und der Pfad kann mittels SCRIPT_PATH=`dirname \`which $0\`` ermittelt werden.
Um alle Möglichkeiten abzuklappern, kann folgender Code-Schnipsel benutzt werden (ungetestet):
# Pfad enthaelt kein / - also aus which bestimmen
if test -z "`echo \"$0\" | grep /`"; then
SCRIPT_PATH=`dirname \`which "$0"\``
# Pfad beginnt mit / - also absoluter Pfad
elif test "`echo $0 | cut -c1`" = "/"; then
SCRIPT_PATH=`dirname "$0"`
# alles andere: relativer Pfad
else
SCRIPT_PATH=`pwd`/`dirname "$0"`
fi
Jan
McFraggle
16-12-2007, 17:29
Wow! Danke Euch beiden! Ja, pwd hätte nicht funktioniert. Aber Jan's Post sieht ganz nach einer Lösung aus.
Danke!
Moin,
damit Nachzuegler wie ich auch hier den 'kanonischen' Weg finden, den Scriptinstallationsort eines Bashscriptes im Script selbst zu finden:
INSTALLATION_PATH="$(dirname $(readlink -f ${0}))"
Ein Beispiel der Nutzung, habe ich hier geposted. (http://www.joocom.de/blog/rabbitmq-mit-zabbix-berwachen/). Das Script dort enthaelt auch noch den Tip, wie man herausfindet, ob eine Funktion definiert ist
declare -f -F "${1}" > /dev/null
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.