O shell não será alterado para outro diretório, a menos que você o informe. Se você quiser que seu script execute comandos em um diretório diferente, chame cd
do seu script.
O caminho para o script está disponível como "$0"
. Se o script é um link simbólico, esse é o caminho para o link simbólico. Se você deseja obter o destino final do link simbólico, chame realpath
( disponível na maioria, mas não em todos os unices modernos; ele está disponível no Linux (GNU e BusyBox), FreeBSD e Solaris 11, mas não no OSX.
cd "$(dirname "$(realpath "$0")")"
realpath
é uma adição relativamente recente aos núcleutils GNU; se sua versão for muito antiga, você poderá usar readlink -f
, que é mais antigo. Para sistemas não-GNU, se realpath
não estiver presente, então readlink
pode ser, mas normalmente olha apenas através de um nível de links simbólicos, a maioria das implementações readlink
não tem a opção -f
para fazer o completo resolução.