Es gibt verschiedene realpath
Befehle.
Das realpath
Dienstprogramm ist ein Wrapper um die realpath
Bibliotheksfunktionen und wurde viele Male neu erfunden .
Debian verwendet , um ein erhalten realpath
Paket ( getrennt von dwww
da holzig ) , die außer in Bezug auf Verpackung und Dokumentation seit 2001 nicht geändert hat, sondern wurde nun auslaufen. Dieses Hilfsprogramm war veraltet, weil es jetzt mehr Standardalternativen (GNU readlink
und bald GNU realpath
) gibt, aber zu der Zeit hatten die GNU-Hilfsprogramme überhaupt keine readlink
. Diese Implementierung realpath
unterstützt einige options
, um die Auflösung symbolischer Links zu verhindern oder eine nullterminierte Ausgabe zu erzeugen.
BusyBox enthält auch einen eigenen realpath
Befehl (der keine Option verwendet).
GNU coreutils hat im Januar 2012 einen realpath
Befehl in Version 8.15 eingeführt . Dies ist ein kompatibler Ersatz für BusyBox und Debian realpath
und hat auch viele Optionen gemeinsam mit GNU readlink
.
realpath
hat den gleichen Effekt wie readlink -f
bei GNU readlink
. Was die beiden Befehle (oder vielmehr die verschiedenen realpath
Befehle readlink -f
) unterscheidet, sind die zusätzlichen Optionen, die sie unterstützen.
GNU realpath
ist nicht veraltet; es hat das gegenteilige problem: es ist zu neu, um überall verfügbar zu sein. Debian ließ GNUrealpath
aus seinem coreutils
Paket aus und blieb bei seinem eigenen realpath
. Ich weiß nicht warum, da GNU realpath
ein Ersatz sein sollte. Ab Debian Jessie und Ubuntu 16.04 wird jedoch GNU realpath
verwendet.
Auf Linux-Systemen empfiehlt es sich derzeit, einen Pfad zu kanonisieren, der möglicherweise symbolische Links enthält readlink -f
.
BSD-Systeme haben einen readlink
Befehl mit anderen Fähigkeiten als GNU readlink
. Insbesondere hat BSD readlink
keine Möglichkeit, Pfade zu kanonisieren, sondern durchläuft nur den ihm übergebenen Symlink.
readlink
Übrigens hatte das gleiche Problem - es wurde auch viele Male erfunden (dieses Dienstprogramm nicht hinzuzufügen, als symbolische Links zu Unix hinzugefügt wurden, war eine bedauerliche Auslassung). Es hat sich jetzt in mehreren Implementierungen mit vielen inkompatiblen Flags (insbesondere BSD vs. GNU) stabilisiert.
readlink -f
war lange vor GNU in OpenBSD. Alle NetBSD, FreeBSD und OpenBSD haben jetztreadlink -f
(Ihr Link erwähnt es sogar).realpath
war lange Zeit in FreeBSD und IRIX (weiß nicht, ob es älter ist als das in Debian). HPUX und IRIX haben es auchreadlink
, wenn auch nicht-f
. Dasrealpath
Paket in Debian experimental ist jetzt das von coreutils (als Experiment, um zu sehen, ob es etwas kaputt macht). Das dwww verhält sichrealpath
eher wiereadlink -e
das GNUreadlink -f
, es ist also kein vollständiger Ersatz