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