Hay varios realpath
comandos alrededor.
La realpath
utilidad es un envoltorio alrededor de las realpath
funciones de la biblioteca y se ha reinventado muchas veces .
Debian solía mantener un realpath
paquete ( separado de dwww
desde woody ) que no ha cambiado, excepto en relación con el embalaje y la documentación desde 2001, pero ahora se ha eliminado. Esta utilidad quedó en desuso porque ahora hay más alternativas estándar (GNU readlink
y pronto GNU realpath
), pero en ese momento, las utilidades de GNU ni siquiera tenían readlink
. Esta implementación de algunos realpath
admite algunos options
para evitar la resolución de enlace simbólico o producir una salida con terminación nula.
BusyBox también incluye su propio realpath
comando (que no tiene opción).
GNU coreutils introdujo un realpath
comando en la versión 8.15 en enero de 2012. Este es un reemplazo compatible para BusyBox y Debian realpath
, y también tiene muchas opciones en común con GNU readlink
.
realpath
tiene el mismo efecto que readlink -f
con GNU readlink
. Lo que distingue los dos comandos (o más bien los diversos realpath
comandos readlink -f
) son las opciones adicionales que admiten.
GNU realpath
no está en desuso; tiene el problema opuesto: es demasiado nuevo para estar disponible en todas partes. Debian solía omitir GNUrealpath
de su coreutils
paquete y quedarse con el suyo realpath
. No sé por qué, ya que GNU realpath
debería ser un reemplazo directo. A partir de Debian jessie y Ubuntu 16.04, sin embargo, realpath
se utiliza GNU .
En los sistemas Linux, en este momento, su mejor opción para canonizar una ruta que puede contener enlaces simbólicos es readlink -f
.
Los sistemas BSD tienen un readlink
comando, con diferentes capacidades de GNU readlink
. En particular, BSD readlink
no tiene una opción para canonizar las rutas, solo atraviesa el enlace simbólico que se le pasó.
readlink
Por cierto, tenía el mismo problema: también se inventó muchas veces (no agregar esta utilidad cuando se agregaron enlaces simbólicos a Unix fue una omisión lamentable). Ahora se ha estabilizado en varias implementaciones con muchos indicadores incompatibles (en particular BSD vs. GNU).
readlink -f
estaba en OpenBSD mucho antes de GNU. Todos NetBSD, FreeBSD y OpenBSD ahora tienenreadlink -f
(su enlace incluso lo menciona).realpath
ha estado en FreeBSD e IRIX durante mucho tiempo (no sé si es anterior al de Debian). HPUX e IRIX también tienenreadlink
, aunque no-f
. Elrealpath
paquete en Debian experimental ahora es el de coreutils (como un experimento para ver si rompe cosas). El dwwwrealpath
actúa más comoreadlink -e
el GNU,readlink -f
por lo que no es un reemplazo completo de Dropin