В сценарии я получаю $0
возможный относительный путь к нему. Для преобразования в абсолют я нашел такое решение, которое не понимаю:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
Моя проблема в магии внутри ${0%/*}
и ${0##*/}
. Похоже, что первый извлекает имя каталога, а второй извлекает имя файла, я просто не понимаю, как.
dirname
Util полезно здесь.
BASH_SOURCE
что лучше, чем $0
, поскольку $0
дает набранную пользователем команду, которая может быть не выполняемым в данный момент скриптом.
readlink -f $0
чтобы получить канонический путь.