Il y a plusieurs realpath
commandes autour.
L' realpath
utilitaire encapsule les realpath
fonctions de la bibliothèque et a été réinventé à plusieurs reprises .
Debian utilisé pour maintenir un realpath
paquet ( séparé de dwww
depuis 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 readlink
et bientôt GNU realpath
), mais à l'époque, les utilitaires GNU n'en avaient même pas readlink
. Cette implémentation de realpath
prend en charge quelques-uns options
pour empêcher la résolution de lien symbolique ou pour produire une sortie terminée par un zéro.
BusyBox inclut également sa propre realpath
commande (qui ne prend aucune option).
GNU coreutils a introduit une realpath
commande 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
.
realpath
a le même effet readlink -f
qu'avec GNU readlink
. Ce qui distingue les deux commandes (ou plutôt les différentes realpath
commandes readlink -f
), ce sont les options supplémentaires qu’elles supportent.
GNU realpath
n'est pas obsolète; le problème est inverse: il est trop nouveau pour être disponible partout. Debian omettait GNUrealpath
de son coreutils
paquet et s'en tenait au sien realpath
. Je ne sais pas pourquoi, puisque GNU realpath
devrait être un remplaçant instantané. Depuis Debian Jessie et Ubuntu 16.04, GNU realpath
est 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 readlink
commande, avec des capacités différentes de GNU readlink
. En particulier, BSD readlink
n'a pas l'option de canoniser les chemins, il ne fait que traverser le lien symbolique qui lui est transmis.
readlink
soit 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).realpath
est 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
. Lerealpath
paquet dans Debian expérimental est maintenant celui de coreutils (à titre d’expérience pour voir s’il casse des choses). Le dwwwrealpath
agit plutôt commereadlink -e
le GNU,readlink -f
alors ce n'est pas un remplacement complet