Hier wenden wir uns einem oft (sogar unter UNIX®-Anwendern) vorkommenden Missverständnis zu, das hauptsächlich dadurch entsteht, dass Links so wie wir sie bisher kennen lernten (fälschlicherweise „Hard“ Links genannt) nur mit normalen Dateien verknüpft waren (wir haben aber auch gesehen, dass das nicht der Fall ist – sogar symbolische Links sind „verknüpft“). Zuerst müssen wir jedoch erklären, was eigentlich symbolische Links („Soft“ Links oder auch „Symlinks“) sind.
Symbolische Links sind Dateien eines speziellen Typs, deren einziger Inhalt eine beliebige Zeichenkette ist, die vom System als Pfad zur eigentlichen Datei interprretiert werden. Diese muss nicht notwendigerweise existieren. Wenn Sie in der Kommandozeile oder in einem Programm einen symbolischen Link verwenden, so benutzen Sie in Wirklichkeit die damit verknüpfte Datei, falls sie existiert. Ein Beispiel:
$ echo Hallo >myfile $ ln -s myfile mylink $ ls -il total 4 169 -rw-rw-r-- 1 franz franz 6 Dec 10 21:30 myfile 416 lrwxrwxrwx 1 franz franz 6 Dec 10 21:30 mylink -> myfile $ cat myfile Hallo $ cat mylink Hallo |
Sie sehen, dass der Dateityp von mylink ein l, also ein symbolischer Link ist. Die Zugriffsrechte für symbolische Links sind uninteressant: sie sind immer rwxrwxrwx. Sie können ebenfalls feststellen, dass der Link wirklich eine andere Datei als myfile ist, da die Inode-Nummern differieren. Der Link verweist aber symbolisch auf die Datei, also geben Sie bei dem Befehl cat mylink in Wirklichkeit den Inhalt der Datei myfile aus. Zur Anschauung, dass ein symbolischer Link eine beliebige Zeichenkette enthalten kann, geben Sie folgendes ein:
$ ln -s "Ich bin keine existierende Datei" anotherlink $ ls -il anotherlink 418 lrwxrwxrwx 1 franz franz 20 Dec 10 21:43 anotherlink -> Ich bin keine existierende Datei $ cat anotherlink cat: anotherlink: No such file or directory $ |
Symbolische Links existieren, um verschiedene Schwachpunkte der normalen („Hard“) Links zu vermeiden:
Sie können keinen Link auf einen Inode in einem Verzeichnis erstellen, das in einem anderen Dateisystem liegt als der bewusste Inode. Der Grund ist einfach: Der Linkzähler ist im Inode gespeichert und Inodes können nicht zwischen Dateisystemen gemeinsam benutzt werden. Mit Symlinks funktioniert das jedoch;
Sie können Verzeichnisse nicht innerhalb eines Dateisystems verlinken, aber Sie können einen Symlink erstellen, der auf ein Verzeichnis verweist und diesen Symlink dann wie ein Verzeichnis nutzen.
Symbolische Links sind daher bei vielen Gelegenheiten nützlich und zahlreiche Anwender tendieren dazu, Symlinks zu verwenden obwohl bei manchen Situationen auch normale Links funktionieren würden. Ein Vorteil der normalen Links ist jedoch, dass eine Datei nicht verloren geht, wenn der Originallink gelöscht wird.
Schließlich und endlich noch eine Bemerkung zur Größe eines Links: Sie haben vermutlich bemerkt, dass die Größe eines sybolischen Links der Größe der enthaltenen Zeichenfolge entspricht.