Se você quiser verificar se $path
é um link simbólico cujo destino é /some/where
, é possível usar o utilitário readlink
. Não é POSIX, mas está disponível em muitos sistemas (GNU / Linux, BusyBox, * BSD,…).
if [ "$(readlink -- "$path")" = /some/where ]; then …
Note que esta é uma comparação exata de texto. Se o destino do link for /some//where
, ou se for where
e o valor de $path
for /some/link
, os textos não corresponderão.
Muitas versões de readlink
suportam a opção -f
, que canoniza o caminho expandindo todos os links simbólicos.
Muitos shells, incluindo dash, ksh, bash e zsh, suportam o operador -ef
no test
builtin para testar se dois arquivos são iguais (links físicos para o mesmo arquivo, após seguir os links simbólicos). Esse recurso também é amplamente suportado, mas não é POSIX.
if [ "$path" -ef "/some/where" ]; then …