BASH_SOURCE[0] 等价于 BASH_SOURCE ,取得当前执行的 shell 文件所在的路径及文件名
dirname 去除文件名中的非目录部分,仅显示与目录有关的部分
如 /home/abc/test.sh 内容如下:
#!/bin/bash
echo "${BASH_SOURCE[0]}"
echo "${BASH_SOURCE}"
echo "$(dirname "${BASH_SOURCE[0]}")"
echo "$(cd "${ dirname BASH_SOURCE[0]}" && pwd)"
若在当前目录 /home 下执行 source ./abc/test.sh ,输出为:
./abc/test.sh
./abc/test.sh
./abc/
/home/abc