Il y a plusieurs realpathcommandes autour.
L' realpathutilitaire encapsule les realpathfonctions de la bibliothèque et a été réinventé à plusieurs reprises .
Debian utilisé pour maintenir un realpathpaquet ( séparé de dwwwdepuis Woody ) qui n'a pas changé , sauf en ce qui concerne l' emballage et la documentation depuis 2001, mais a été éliminée. Cet utilitaire était obsolète car il y avait maintenant plus d'alternatives standard (GNU readlinket bientôt GNU realpath), mais à l'époque, les utilitaires GNU n'en avaient même pas readlink. Cette implémentation de realpathprend en charge quelques-uns optionspour empêcher la résolution de lien symbolique ou pour produire une sortie terminée par un zéro.
BusyBox inclut également sa propre realpathcommande (qui ne prend aucune option).
GNU coreutils a introduit une realpathcommande dans la version 8.15 en janvier 2012. Il s'agit d'un remplacement compatible pour BusyBox et Debian realpath. Il comporte également de nombreuses options communes avec GNU readlink.
realpatha le même effet readlink -fqu'avec GNU readlink. Ce qui distingue les deux commandes (ou plutôt les différentes realpathcommandes readlink -f), ce sont les options supplémentaires qu’elles supportent.
GNU realpathn'est pas obsolète; le problème est inverse: il est trop nouveau pour être disponible partout. Debian omettait GNUrealpath de son coreutilspaquet et s'en tenait au sien realpath. Je ne sais pas pourquoi, puisque GNU realpathdevrait être un remplaçant instantané. Depuis Debian Jessie et Ubuntu 16.04, GNU realpathest utilisé.
Sur les systèmes Linux, pour le moment, votre meilleur choix pour canoniser un chemin pouvant contenir des liens symboliques est readlink -f.
Les systèmes BSD ont une readlinkcommande, avec des capacités différentes de GNU readlink. En particulier, BSD readlinkn'a pas l'option de canoniser les chemins, il ne fait que traverser le lien symbolique qui lui est transmis.
readlinksoit dit en passant, le même problème - il a également été inventé à plusieurs reprises (ne pas ajouter cet utilitaire lorsque des liens symboliques ont été ajoutés à Unix était une omission regrettable) Il s'est maintenant stabilisé dans plusieurs implémentations avec de nombreux drapeaux incompatibles (en particulier BSD vs. GNU).
readlink -fétait dans OpenBSD bien avant GNU. NetBSD, FreeBSD et OpenBSD ont maintenant tousreadlink -f(votre lien le mentionne même).realpathest dans FreeBSD et IRIX depuis longtemps (je ne sais pas si c'est antérieur à celui de Debian). HPUX et IRIX ont égalementreadlink, mais pas-f. Lerealpathpaquet dans Debian expérimental est maintenant celui de coreutils (à titre d’expérience pour voir s’il casse des choses). Le dwwwrealpathagit plutôt commereadlink -ele GNU,readlink -falors ce n'est pas un remplacement complet