W skrypcie dostaję $0
moż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ć.
dirname
Util jest tu przydatna.
BASH_SOURCE
jest lepsza niż $0
, ponieważ $0
daje użytkownikowi wpisane polecenie, które może nie być aktualnie wykonywanym skryptem.
readlink -f $0
aby uzyskać ścieżkę kanoniczną.