shell

UNIX 109: ln -s

Q: Was passiert durch folgende Shell-Kommandos:

mkdir ./dir
ln -s dir ./symlink
ln -s dir ./symlink

A: Ein find liefert einem folgendes:

$ find dir symlink -type l -printf '%p -> %l\n' -o -print
dir
dir/dir -> dir
symlink -> dir

Beim Anlegen des zweiten symbolischen Links folgt dieser dem angegebenen Zielpfad ./symlink und gelangt so in das Verzeichnis ./dir, innerhalb dessen dann ein weiterer symbolischer Link angelegt wird.

Es empfiehlt sich deshalb, den alten Verzeichniseintrag vorher mit rm -f ./symlink zu löschen bevor man den symbolischen Link erstellt. Oder man verwendet direkt ln --symbolic --no-dereference --force oder kurz ln -snf dir ./symlink.

Durch diese Unachtsamkeit liegen gerne mal unter /etc/univention/ssl/ oder /etc/runit/ unmotiviert fehlerhafte Links herum…

Written on March 19, 2019