Respostas:
link=/var/opt/foo
target=$(readlink "$link")
$target agora é o destino do link, exatamente como foi armazenado no sistema de arquivos.
Os links simbólicos podem ser relativos, portanto, isso seria melhor para o uso normal:
target=$(readlink -f "$link")
Observe que isso é usado readlinkno GNU Coreutils, que pode não existir no BSD e em outros sistemas.
Editar: readlink -f funciona em BSDs, desde que o destino do link exista. realpathé outra ferramenta, somente BSD, que funciona de maneira semelhante.
-fe readlink -ffunciona da mesma maneira (assumindo que o destino do link existe). No BSD, realpathparece ser outra alternativa para readlink -m.
readlink()chamada do sistema desde os dias de 4.2BSD. Oreadlinkutilitário atual dos BSDs foi lançado com o FreeBSD 4.10. Foi (re) implementado como um link físico para ostatcomando ( página de manual do MacOS X Página de manual do FreeBSD 9 ). Observe que ele não tem uma-mopção.