Wokół jest kilka realpath
poleceń.
realpath
Narzędzie jest owinięcie wokół realpath
funkcji bibliotecznych i został odkryty na nowo wiele razy .
Debian wykorzystywane do utrzymywania realpath
pakiet ( oddzielony od dwww
od zdrewniałe ), które nie zmieniły się poza dotyczące opakowań i dokumentacji od 2001 roku, ale został zniesiony. To narzędzie było przestarzałe, ponieważ istnieje teraz więcej standardowych alternatyw (GNU readlink
i wkrótce GNU realpath
), ale w tym czasie narzędzia GNU nawet nie miały readlink
. Ta implementacja realpath
obsługuje kilka, options
aby zapobiec rozdzieleniu dowiązań symbolicznych lub wygenerować wyjście zakończone zerem.
BusyBox zawiera również własne realpath
polecenie (które nie ma żadnej opcji).
Coreutils GNU wprowadziło realpath
polecenie w wersji 8.15 w styczniu 2012 r. Jest to kompatybilny zamiennik dla BusyBox i Debian realpath
, a także ma wiele opcji wspólnych z GNU readlink
.
realpath
ma taki sam efekt jak w readlink -f
przypadku GNU readlink
. To, co odróżnia te dwa polecenia (a raczej różne realpath
od nich readlink -f
), to dodatkowe opcje, które obsługują.
GNU realpath
nie jest przestarzałe; ma odwrotny problem: jest zbyt nowy, aby był dostępny wszędzie. Debian zwykł pomijać GNUrealpath
ze swojego coreutils
pakietu i trzymać się własnego realpath
. Nie wiem dlaczego, skoro GNU realpath
powinno być zamiennikiem. Jednak w Debianie jessie i Ubuntu 16.04 realpath
używany jest GNU .
W systemach Linux najlepszym rozwiązaniem do kanonizacji ścieżki, która może zawierać dowiązania symboliczne, jest obecnie readlink -f
.
Systemy BSD mają readlink
polecenie o różnych możliwościach od GNU readlink
. W szczególności BSD readlink
nie ma opcji kanonizacji ścieżek, jedynie przegląda przekazane do niej dowiązanie symboliczne.
readlink
, nawiasem mówiąc, miał ten sam problem - został również wynaleziony wiele razy (nie dodawanie tego narzędzia, gdy dowiązania symboliczne były dodawane do Uniksa, było godnym pożałowania pominięciem). Teraz ustabilizował się w kilku implementacjach z wieloma niezgodnymi flagami (w szczególności BSD vs. GNU).
readlink -f
był w OpenBSD na długo przed GNU. Wszystkie NetBSD, FreeBSD i OpenBSD mają terazreadlink -f
( nawet twój link o tym wspomina).realpath
był w FreeBSD i IRIX od dłuższego czasu (nie wiem, czy poprzedza ten w Debianie). HPUX i IRIX równieżreadlink
, choć nie-f
.realpath
Pakiet w experimental Debian jest obecnie jednym z coreutils (jako eksperyment, aby zobaczyć czy łamie rzeczy). Dwwwrealpath
działa bardziej jakreadlink -e
GNU,readlink -f
więc nie jest to całkowite dropin zamień