Existem vários realpath
comandos por aí.
O realpath
utilitário é um invólucro em torno das realpath
funções da biblioteca e foi reinventado várias vezes .
Debian usado para manter um realpath
pacote ( separados a partir dwww
desde lenhosa ), que não mudou, exceto sobre embalagens e documentação desde 2001, mas agora foi descontinuada. Este utilitário foi descontinuado porque agora existem mais alternativas padrão (GNU readlink
e logo GNU realpath
), mas, na época, os utilitários GNU nem sequer possuíam readlink
. Esta implementação realpath
suporta alguns options
para impedir a resolução de link simbólico ou produzir saída terminada em nulo.
O BusyBox também inclui seu próprio realpath
comando (que não tem opção).
O GNU coreutils introduziu um realpath
comando na versão 8.15 em janeiro de 2012. Este é um substituto compatível para o BusyBox e o Debian realpath
e também possui muitas opções em comum com o GNU readlink
.
realpath
tem o mesmo efeito que readlink -f
com o GNU readlink
. O que distingue os dois comandos (ou melhor, os vários realpath
comandos readlink -f
) são as opções extras que eles suportam.
GNU realpath
não está obsoleto; tem o problema oposto: é novo demais para estar disponível em qualquer lugar. O Debian costumava omitir o GNUrealpath
do seu coreutils
pacote e manter o seu realpath
. Não sei por que, já que o GNU realpath
deve ser um substituto. No Debian jessie e no Ubuntu 16.04, no entanto, o GNU realpath
é usado.
Nos sistemas Linux, no momento, sua melhor opção para canonizar um caminho que pode conter links simbólicos é readlink -f
.
Os sistemas BSD têm um readlink
comando, com diferentes recursos do GNU readlink
. Em particular, o BSD readlink
não tem uma opção para canonizar caminhos, apenas percorre o link simbólico passado a ele.
readlink
, aliás, teve o mesmo problema - ele também foi inventado várias vezes (não adicionar esse utilitário quando links simbólicos foram adicionados ao Unix foi uma omissão lamentável). Agora, ele se estabilizou em várias implementações com muitos sinalizadores incompatíveis (em particular BSD vs. GNU).
readlink -f
estava no OpenBSD muito antes do GNU. Todo o NetBSD, FreeBSD e OpenBSD agora possuemreadlink -f
(o seu link até menciona).realpath
está no FreeBSD e no IRIX há muito tempo (não sei se é anterior ao Debian). HPUX e IRIX também têmreadlink
, embora não-f
. Orealpath
pacote no Debian experimental agora é o do coreutils (como um experimento para ver se ele quebra as coisas). O dwwwrealpath
age mais comoreadlink -e
enquanto o GNU um comoreadlink -f
por isso não é um dropin completa substituir