BASH_SOURCE[0] 等价于 BASH_SOURCE, 取得当前执行的shell文件所在的路径及文件名。
如/home/abc/test.sh 内容如下:
#!/bin/shecho "${BASH_SOURCE[0]}"
echo "${BASH_SOURCE]}"
echo "$( dirname "${BASH_SOURCE[0]}" )"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $DIR
若当前目录在/home/,执行source ./abc/test.sh, 则输出:
./abc/test.sh
./abc/test.sh
./abc/
/home/abc
总之:
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 得到shell脚本文件所在完整路径(绝对路径)及文件名(无论source,sh,.三种调用方式),且不改变shell的当前目录。
本文深入探讨了BASH_SOURCE[0]的用途,解释了其如何获取当前执行的Shell文件的路径及文件名,并通过实例展示了在不同调用方式下输出的正确使用方法。
436

被折叠的 条评论
为什么被折叠?



