Em um script, entro no $0
possível caminho relativo para ele. Para convertê-lo em absoluto, encontrei esta solução que não entendo:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
Meu problema é a mágica dentro de ${0%/*}
e ${0##*/}
. Parece que o primeiro extrai o nome do diretório e o último extrai o nome do arquivo, apenas não entendo como.
dirname
utilitário é útil aqui.
BASH_SOURCE
é melhor do que $0
, pois $0
fornece o comando digitado pelo usuário, que pode não ser o script em execução no momento.
readlink -f $0
o caminho canônico.