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