Есть несколько 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 -eGNU,readlink -fтак что это не полная замена