Es ist in der Regel nicht so etwas wie die absolute path
in eine Datei (diese Aussage bedeutet , dass es im Allgemeinen mehr sein kann als ein, daher die Verwendung des bestimmten Artikels der nicht geeignet ist). An absolute path
ist ein beliebiger Pfad, der vom Stammverzeichnis "/" ausgeht und eine Datei ohne Mehrdeutigkeit unabhängig vom Arbeitsverzeichnis bezeichnet (siehe z. B. Wikipedia ).
A relative path
ist ein Pfad, der ausgehend von einem anderen Verzeichnis interpretiert werden soll. Es kann das Arbeitsverzeichnis sein, wenn es relative path
von einer Anwendung manipuliert wird (wenn auch nicht unbedingt). Wenn es sich in einem symbolischen Link in einem Verzeichnis befindet, soll es im Allgemeinen relativ zu diesem Verzeichnis sein (obwohl der Benutzer möglicherweise andere Verwendungszwecke hat).
Daher ist ein absoluter Pfad nur ein Pfad relativ zum Stammverzeichnis.
Ein Pfad (absolut oder relativ) kann symbolische Verknüpfungen enthalten oder nicht. Wenn dies nicht der Fall ist, ist es auch etwas undurchlässig für Änderungen in der Verknüpfungsstruktur, aber dies ist nicht unbedingt erforderlich oder sogar wünschenswert. Einige Leute nennen canonical path
(oder canonical file name
oder resolved path
) eine, absolute path
in der alle symbolischen Verknüpfungen aufgelöst wurden, dh durch einen Pfad ersetzt wurden, zu dem sie verknüpfen. Die Befehle realpath
und readlink
beide suchen nach einem kanonischen Pfad, haben jedoch nur realpath
die Option, einen absoluten Pfad abzurufen, ohne sich die Mühe zu machen, symbolische Links aufzulösen (zusammen mit mehreren anderen Optionen, um verschiedene Arten von Pfaden abzurufen, absolut oder relativ zu einem Verzeichnis).
Dies erfordert mehrere Bemerkungen:
- Symbolische Links können nur aufgelöst werden, wenn bereits alles erstellt wurde, worauf sie verlinken sollen, was offensichtlich nicht immer der Fall ist. Die Befehle
realpath
und readlink
haben Optionen, um dies zu berücksichtigen.
- Ein Verzeichnis auf einem Pfad kann später zu einer symbolischen Verknüpfung werden, was bedeutet, dass der Pfad nicht mehr vorhanden ist
canonical
. Daher ist das Konzept zeit- (oder umwelt-) abhängig.
- Selbst im Idealfall, wenn alle symbolischen Verknüpfungen aufgelöst werden können, kann
canonical path
eine Datei aus zwei Gründen immer noch mehrere enthalten :
- Die Partition, die die Datei enthält, wurde möglicherweise gleichzeitig (
ro
) an mehreren Einhängepunkten bereitgestellt.
- Möglicherweise gibt es feste Links zu der Datei, was bedeutet, dass die Datei im Wesentlichen in mehreren verschiedenen Verzeichnissen vorhanden ist.
Selbst mit der viel restriktiveren Definition von canonical path
kann es daher mehrere kanonische Pfade zu einer Datei geben. Dies bedeutet auch, dass das Qualifikationsmerkmal canonical
etwas unzureichend ist, da es normalerweise einen Begriff der Einzigartigkeit impliziert.
Dies erweitert eine kurze Diskussion des Themas in einer Antwort auf eine andere ähnliche Frage bei Bash: Abrufen des absoluten Pfades, der relativ angegeben ist
Mein Fazit ist, dass realpath
es besser gestaltet und viel flexibler ist als readlink
. Die einzige Verwendung readlink
, die nicht abgedeckt realpath
ist, ist der Aufruf ohne Option, der den Wert einer symbolischen Verknüpfung zurückgibt.