Eles devem funcionar da mesma forma, desde que não haja links simbólicos (na expansão do caminho ou no próprio script):
-
MYDIR="$(dirname "$(realpath "$0")")"
-
MYDIR="$(dirname "$(which "$0")")"
-
Uma versão em dois passos de qualquer um dos itens acima:
MYSELF="$(realpath "$0")"
MYDIR="${MYSELF%/*}"
Se houver um link simbólico no caminho para seu script, which
fornecerá uma resposta sem incluir a resolução desse link. Se realpath
não estiver instalado por padrão no seu sistema, você pode encontrá-lo aqui .
[EDITAR]: parece que realpath
não tem vantagem sobre readlink -f
sugerido pelo Caleb , provavelmente é melhor usar o último. Meus testes de tempo indicam que é realmente mais rápido.