Есть несколько realpath
команд вокруг.
realpath
Утилита является оболочкой вокруг realpath
библиотеки функций и была заново много раз .
Debian используется для поддержания realpath
пакета ( отделенного от dwww
так древесного ) , который не изменился , за исключением относительно упаковки и документации с 2001 года, но в настоящее время прекращено. Эта утилита устарела, потому что теперь существует больше стандартных альтернатив (GNU readlink
и скоро GNU realpath
), но в то время утилит GNU даже не было readlink
вообще. Эта реализация realpath
поддерживает несколько options
для предотвращения разрешения символьных ссылок или для вывода с нулевым символом в конце.
BusyBox также включает в себя свою собственную realpath
команду (которая не имеет никакой опции).
GNU coreutils представила realpath
команду в версии 8.15 в январе 2012 года. Это совместимая замена для BusyBox и Debian realpath
, а также имеет много общих с GNU опций readlink
.
realpath
имеет тот же эффект, что и readlink -f
с GNU readlink
. Что отличает две команды (или, скорее, от различных realpath
команд readlink -f
), это дополнительные опции, которые они поддерживают.
GNU realpath
не считается устаревшим; у него противоположная проблема: он слишком новый, чтобы быть доступным везде. Debian обычно опускал GNUrealpath
из своего coreutils
пакета и придерживался собственного realpath
. Я не знаю почему, так как GNU realpath
должен быть заменой. Однако в Debian jessie и Ubuntu 16.04 используется GNU realpath
.
В настоящее время в системах Linux лучше всего канонизировать путь, который может содержать символические ссылки readlink -f
.
В системах BSD есть readlink
команда, отличающаяся от GNU readlink
. В частности, BSD readlink
не имеет возможности канонизировать пути, он только проходит символическую ссылку, переданную ему.
readlink
Между прочим, была такая же проблема - она также была изобретена много раз (исключение этой утилиты, когда символические ссылки были добавлены в Unix, было прискорбным упущением). В настоящее время он стабилизировался в нескольких реализациях со многими несовместимыми флагами (в частности, BSD против GNU).
readlink -f
был в OpenBSD задолго до GNU. Все NetBSD, FreeBSD и OpenBSD теперь естьreadlink -f
(ваша ссылка даже упоминает об этом).realpath
был в FreeBSD и IRIX в течение долгого времени (не знаю, предшествует ли он Debian). HPUX и IRIX тоже естьreadlink
, хотя и нет-f
.realpath
Пакет в Debian экспериментальной теперь один из Coreutils ( в качестве эксперимента , чтобы увидеть , если он ломает вещи). Dwwwrealpath
действует больше какreadlink -e
GNU,readlink -f
так что это не полная замена