• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] basename $0 schlägt als user fehl

Liffi

Newbie
Auf meinem OpenSuSe 10.1 läuft ein Skript, das basename $0 braucht.
Als root gibt ein "basename $0" auch das gewünschte "bash" aus,
als user aber:
Code:
[liffi@suse]liffi 515$ basename $0
basename: Ungültige Option -- b
â gibt weitere Informationen.
eine google-Suche brachte mir bisher leider nur jede Menge Skripte, aber keine sinnvollen Informationen (vielleicht kennt ja jemand die geeigneten Suchbegriffe ;-))

EDIT:: echo $0 als root gibt bash aus
echo $0 als user gibt -bash aus
 
OP
L

Liffi

Newbie
ok... man muß scheinbar nur geduldig genug googlen ;-).
Auf der gefühlten 25. Seite hab ich einen Lösungsansatz gefunden.
$0 durch "/$0" ersetzen
 
Liffi schrieb:
ok... man muß scheinbar nur geduldig genug googlen ;-).
Auf der gefühlten 25. Seite hab ich einen Lösungsansatz gefunden.
$0 durch "/$0" ersetzen
Nein das wäre falsch:
Code:
13:14 gwdg-wb04:~ > sh ./testme.sh 
./testme.sh
/./testme.sh
Du merkst hoffentlich den Unterschied. Korrekt wäre:
Code:
echo "${0##*/}";
 
OP
L

Liffi

Newbie
und es funktioniert auch nicht :p

Code:
[liffi@suse] liffi 503$ basename "${0##*/}" 
basename: Ungültige Option -- b
â gibt weitere Informationen.
 
Wieso basename "${0##*/}"? Ich hab gesagt `${0##*/}` ist equivalent zu `basename $0`. (Ausserdem ist `basename -- "$0"` zu verwenden, da $0 i.d.R. "-bash" ist, und du daher `basename -bash` aufrufen würdest, was widerrum als Option verstanden wird.)
 
OP
L

Liffi

Newbie
jengelh schrieb:
Wieso basename "${0##*/}"? Ich hab gesagt `${0##*/}` ist equivalent zu `basename $0`. (Ausserdem ist `basename -- "$0"` zu verwenden, da $0 i.d.R. "-bash" ist, und du daher `basename -bash` aufrufen würdest, was widerrum als Option verstanden wird.)
oh...das hab ich irgendwie falsch interpretiert. Mit basename -- "$0" klappt es auch ganz fantastisch :).
Danke!
 
Oben