readlink -f "$(type -P sleep)"
ou se você está preocupado com o desempenho:
cpath="$(type -P sleep)"; [ ! -L "$cpath" ] || cpath="$(readlink -f "$cpath")"
Usar readlink -e
(existente) em vez de readlink -f
pode poupar você desse tipo de acidente em que você opera em um arquivo não existente.
O segundo exemplo assume que o caminho retornado por type -P
é canônico, o que significa que ele pressupõe que seu caminho não tenha componentes não canônicos.