ubuntuusers.de

bash Skript: Speicherort des Skriptes ermitteln?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Str

Anmeldungsdatum:
15. September 2007

Beiträge: 16

Hi,

ich versuche schon seit längerem, mittels eines Bash Skriptes den Speicherort von eben diesem zu ermitteln...

Hintergrund ist der, dass das Skript selbst in der Lage sein soll seinen eigenen Speicherort zu ermitteln, um dort mit anderen Dateien interagieren zu können...

wre es kein Bash skript, könnte man das ja direkt per xyz=$(pwd) machen, aber das funktioniert nicht, sobald das skript nicht mehr von seinem Speicherort aus aufgerufen wird, zb durch einen cronjob...

Danke schonmal & frohes neues allesamt!

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

Kann man nicht. Nur den Namen des Scripts hat man $0.

Lass dir eben den Pfad als Parameter mitgeben..

MrKanister

Anmeldungsdatum:
13. Oktober 2007

Beiträge: 2105

Wenn ich in einem sebst gestrickten shell-Skript "$0" benutze, dann zeigt es mir den gesamten Pfad an.

Meine Skripte sind zB. alle im Ordner /home/<benutzername>/bin/, welcher bei $0 mit angezeigt wird.
Das nutze ich beispielsweise um eine "helpfile", die im gleichen Ordner wie das Skript liegt, aufzurufen, wenn gewünscht.

if [ "$1" == "--help" ] ; then
        cat "$0_helpfile"
        exit
fi

Gruß

Martin

jbob

Avatar von jbob

Anmeldungsdatum:
31. Dezember 2006

Beiträge: 81

Ich hab das hier mal irgendwo gefunden:

if [ "$0" != "./skriptname.sh" ] ; then
prog=`which $0 | grep $0`
ende=`echo $prog | sed s#\^.\*/##`
verz=`echo $prog | sed s/$ende//`
cd $verz
fi

Du musst natürlich noch skritpname.sh an dein Skript anpassen.

Der_Gestreifte

Avatar von Der_Gestreifte

Anmeldungsdatum:
21. Juni 2007

Beiträge: 1261

Wohnort: Nürnberg

ich versuche schon seit längerem, mittels eines Bash Skriptes den Speicherort von eben diesem zu ermitteln...

basename $0

Funktioniert natürlich nur, wenn es mit komplettem (absolutem!) Pfad aufgerufen wird oder der Pfad zum Speicherort in $PATH ist. Eines von beiden hast du aber sowieso in Deiner crontab.

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo Str.
Str hat geschrieben:

... ich versuche schon seit längerem, mittels eines Bash Skriptes den Speicherort von eben diesem zu ermitteln... ...

#!/bin/bash
dirname $(readlink -f ${0})


Erklärung:
- readlink → liefert den vollständigen Pfad incl. Name vom Programm
- dirname → gibt nur den Teil mit dem Verzeichnisnamen aus

Gruß
Norman

wag

Anmeldungsdatum:
2. Januar 2008

Beiträge: Zähle...

Versuchs mal mit:

"`dirname $0`/`basename $0`"

Str

(Themenstarter)

Anmeldungsdatum:
15. September 2007

Beiträge: 16

dirname readlink -f $0 funktioniert einfach perfekt ☺

Danke an alle!

Antworten |