Eu gostaria de recuperar o nome absoluto do arquivo de script atualmente executado. Os links também devem ser resolvidos.
No Linux, isso parece ser feito assim:
$(readlink -mn "$0")
mas readlink
parece funcionar de maneira muito diferente no Mac OS X.
Eu li que isso é feito usando
$(realpath $0)
no BSD, mas isso também não funciona. O Mac OS X não possui realpath
.
Qualquer ideia?
Respostas:
Eu trapaceio e uso o perl para isso:
Você pensaria que eu escreveria o script inteiro em perl, e geralmente escrevo, mas nem sempre.
fonte
fonte
unset -v CDPATH
antes do CD, pois o CD pode causar uma saída indesejada se CDPATH estiver definido.scriptDir=$(unset -v CDPATH; cd "$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE)")" && pwd -P)
Ele lida com combinações de links simbólicos e funciona em arquivos e pastas:
Mas não suporta realpath - relativo a. Isso exigiria a conversão descrita aqui .
fonte
Outra abordagem:
fonte