Am Donnerstag, 18. September 2003 19:00 schrieb David Haller:
Hallo,
Am Thu, 18 Sep 2003, Andreas Kyek schrieb:
Ich suche eine Lösung zu folgendem Problem:
[..]
Da ich meine eigentlichen Skripte nicht umbenennen will, habe ich "kryptische" Links angelegt, die auf meine Skripte mit sprechendem Namen zeigen.
[..]
Leider liefert basename/dirname nicht den Namen des echten Skriptes sondern den des Links wenn die Teile unter dem Linknamen gestartet werden.
Kann man irgendwie elegant das ganze lösen?
AFAIK nicht "ootb", aber vielleicht hilft dir readlink zusammen mit test -f / test -L ...
==== minimal getestet ==== #! /bin/sh
find_real_name() { if test -L "$1" then p="$1" while test -L "$p" do d="`dirname \"$p\"`" test -d "$d" && cd "$d" || exit 1 p="`basename \"$p\"`" test -L "$p" && { r="`readlink \"$p\"`" || exit 2; } p="`pwd`/$r" done fi d="`dirname \"$p\"`" test -d "$d" && cd "$d" || exit 3 p="`basename \"$p\"`" rn="`pwd`/$p" echo "$rn" }
IAM="$0" IAM="`find_real_name \"$IAM\"`"
echo "IAM='$IAM'"
Das sieht mir schon wieder recht kompliziert aus ;) ich="$0" while -n "`readlink \"$ich\"`"; do ich="`readlink \"$ich\"`" done echo "ich bin $ich" (ungetestet) Jan