PDA

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

jan61
16-12-2007, 17:08
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!

joocom
07-05-2014, 11:19
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