W skrypcie dostaję $0możliwą względną ścieżkę do niego. Aby przekonwertować go na wartość absolutną, znalazłem rozwiązanie, którego nie rozumiem:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
Moim problemem jest magia wewnątrz ${0%/*}i ${0##*/}. Wygląda na to, że pierwszy wyodrębnia nazwę katalogu, a drugi wyodrębnia nazwę pliku, po prostu nie rozumiem, jak to zrobić.
dirnameUtil jest tu przydatna.
BASH_SOURCEjest lepsza niż $0, ponieważ $0daje użytkownikowi wpisane polecenie, które może nie być aktualnie wykonywanym skryptem.
readlink -f $0aby uzyskać ścieżkę kanoniczną.