スクリプトを準備
$ cat << 'EOF' > test
> echo $0
> echo $BASH_SOURCE
> echo ${BASH_SOURCE:-$0}
> EOF
$ chmod 777 test
実行してみる
$ ./test
./test
./test
./test
$ bash ./test
./test
./test
./test
$ source ./test
-bash
./test
./test
$ zsh test
./test
./test
sourceで実行されても、bashでもzshで実行されてもうまく実行ファイルのパスを取得するためには、BASH_SOURCE:-$0
と書くべき
実行ファイルのディレクトリの絶対パスを取得するにはecho $(cd $(dirname ${BASH_SOURCE:-$0}); pwd)
でいける