Ist ein symbolischer / weicher Link einer Verknüpfung / einem Alias ​​auf einem Desktop ähnlich?

19

Es klingt für mich so, als ob die Grundidee von weichen / symbolischen Links im Vergleich zu Verknüpfungen (auf einem PC) oder Aliasen (auf einem Mac) dasselbe ist. Bin ich weg? Sind sie ähnlich

Marty
quelle

Antworten:

14

Die Grundidee ist ungefähr die gleiche. Eine symbolische Verknüpfung ist eine spezielle Datei, die einen Pfad (relativ oder absolut) zu einem anderen Dateisystemobjekt enthält. In UNIX / Linux verarbeitet das Betriebssystem selbst die symbolische Verknüpfung und löst diese transparent in das reale Objekt auf.

Auf Macs scheint ein Alias ​​ein spezielles Finder-Konstrukt zu sein, das sowohl auf ferne als auch auf lokale Objekte verweisen kann. Finder löst jedoch den Verweis und nicht das Betriebssystem auf. MacOS X verfügt auch über symbolische Verknüpfungen, die jedoch von Aliasen getrennt sind.

Der große Unterschied besteht zwischen einer Windows-Verknüpfung und einer symbolischen Verknüpfung. Eine Windows-Verknüpfung kann ein Programm nicht einfach ersetzen, da Windows immer diese lästigen Dateierweiterungen haben muss und eine "lnk" -Datei für Windows keine ausführbare Datei ist . Innerhalb der GUI funktioniert es, aber vom Server aus gesehen ist es barfs. Gleiches gilt für ein Verzeichnis. Sie sind nützlich, haben aber nicht die Kraft und Flexibilität einer symbolischen Verbindung.

Arcege
quelle
"Dasselbe mit einem Verzeichnis": Meinst du, dass man in einem Symlink, der auf ein Verzeichnis verweist, keine CDs einlegen kann?
Dash17291
2
Das bedeutet, dass Sie auf einem Windows-System keine Verknüpfung erstellen können, da es sich um ein Windows-Konstrukt und nicht um DOS handelt. Unter UNIX / Linux handelt es sich um ein Dateisystemkonstrukt, sodass es überall funktioniert, einschließlich des cdBefehls. Es ist Sache des Befehls, den Endpunkt zu interpretieren, nicht das Betriebssystem. Beispielsweise cdkönnte ein Symlink zu einem Verzeichnis verwendet werden, bei einem Symlink zu einer regulären Datei schlägt dies jedoch ordnungsgemäß fehl.
Arcege
7

Nicht wirklich. Es gibt eine Ähnlichkeit, aber nur bis zu einem gewissen Punkt. Ich kannte Leute, die meinten "ok, Symlinks sind wie Verknüpfungen, aber ich verstehe sie nicht ganz", bis zu dem Punkt, als sie sagten "Oh, eigentlich sind Symlinks nicht wie Verknüpfungen, und jetzt verstehe ich sie". Ich denke, Verknüpfungen sind kein guter Weg, um symbolische Verknüpfungen zu verstehen, und ich empfehle Ihnen, den Vergleich mit Verknüpfungen zu klären.

Ein symbolischer Link gibt den Namen einer anderen Datei an. Das ist "Name" wie im vollständigen Pfad, dh möglicherweise einschließlich eines Verzeichnisteils sowie des Namens innerhalb des Verzeichnisses. Der Pfad kann absolut sein ( /foo/bar) oder relativ ( foo/baroder ../baroder bar); Wenn das Ziel durch einen relativen Pfad angegeben wird, wird es relativ zu dem Verzeichnis interpretiert, das den symbolischen Link enthält. Die Zieldatei kann vorhanden sein oder nicht, und das Entfernen, Verschieben oder Erstellen der Zieldatei hat keine Auswirkungen auf die symbolische Verknüpfung.

Vorgänge, die sich auf den Inhalt der Datei auswirken, wirken sich auf die Zieldatei aus. Wenn Sie also eine Datei über eine symbolische Verknüpfung lesen oder schreiben oder ein Programm über eine symbolische Verknüpfung ausführen, ist dies so, als würden Sie auf die Zieldatei zugreifen. Vorgänge, die von außen auf eine Datei wirken, z. B. das Umbenennen oder Löschen, wirken sich auf die symbolische Verknüpfung selbst aus. Beachten Sie, dass es beim Schreiben einen Unterschied macht, ob Sie die vorhandene Datei überschreiben (die auf das Ziel wirkt) oder die vorhandene Datei entfernen und eine neue Datei erstellen (die das Ziel intakt lässt und eine neue Datei erstellt, die den Symlink ersetzt, sofern dies nicht der Fall ist Die Anwendung achtet darauf, dem Link zu folgen (viele tun dies).

Gilles 'SO - hör auf böse zu sein'
quelle
1
Ein symbolischer Link stellt nicht immer einen vollständigen Pfad dar: Auf meinem Slackware 13.1-System ist /usr/lib/libXv.so ein symbolischer Link zu libXv.so.1.0.0. Kein vollständiger Pfad da.
Bruce Ediger