Ci sono diversi realpath
comandi in giro.
L' realpath
utilità è un wrapper per le realpath
funzioni della libreria ed è stata reinventata molte volte .
Debian era solita mantenere un realpath
pacchetto ( separato da dwww
da woody ) che non è cambiato se non per quanto riguarda l'imballaggio e la documentazione dal 2001, ma ora è stato gradualmente eliminato. Questa utility è stata deprecata perché ora ci sono più alternative standard (GNU readlink
e presto GNU realpath
), ma al momento le utility GNU non lo avevano nemmeno readlink
. Questa implementazione di realpath
supporta alcuni options
per impedire la risoluzione del collegamento simbolico o produrre output con terminazione null.
BusyBox include anche il proprio realpath
comando (che non richiede opzioni).
I coreutils di GNU hanno introdotto un realpath
comando nella versione 8.15 nel gennaio 2012. Questo è un sostituto compatibile per BusyBox e Debian realpath
e ha anche molte opzioni in comune con GNU readlink
.
realpath
ha lo stesso effetto readlink -f
di GNU readlink
. Ciò che distingue i due comandi (o piuttosto i vari realpath
comandi da readlink -f
) sono le opzioni extra che supportano.
GNU realpath
non è deprecato; ha il problema opposto: è troppo nuovo per essere disponibile ovunque. Debian ometteva GNUrealpath
dal suo coreutils
pacchetto e si atteneva al suo realpath
. Non so perché, dal momento che GNU realpath
dovrebbe essere un sostituto drop-in. A partire da Debian jessie e Ubuntu 16.04, tuttavia, realpath
viene utilizzato GNU .
Sui sistemi Linux, al momento, la soluzione migliore per canonicalizzare un percorso che può contenere collegamenti simbolici è readlink -f
.
I sistemi BSD hanno un readlink
comando, con capacità diverse da GNU readlink
. In particolare, BSD readlink
non ha un'opzione per canonicalizzare i percorsi, attraversa solo il collegamento simbolico ad esso passato.
readlink
, per inciso, ha avuto lo stesso problema - è stato anche inventato molte volte (non aggiungere questa utilità quando sono stati aggiunti collegamenti simbolici a Unix è stata una deplorevole omissione). Si è ora stabilizzato in diverse implementazioni con molti flag incompatibili (in particolare BSD vs. GNU).
readlink -f
era in OpenBSD molto prima di GNU. Tutti NetBSD, FreeBSD e OpenBSD ora hannoreadlink -f
(anche il tuo link lo menziona).realpath
è in FreeBSD e IRIX da molto tempo (non so se è precedente a quello in Debian). Anche HPUX e IRIX hannoreadlink
, sebbene non lo siano-f
. Ilrealpath
pacchetto in Debian sperimentale è ora quello di coreutils (come esperimento per vedere se rompe le cose). Il dwww sirealpath
comporta in modo più simile areadlink -e
quello GNU,readlink -f
quindi non è un rimpiazzo completo