文章目录
shell获取当前执行脚本的路径和文件名
Column 1 | Column 2 |
---|---|
$0 | 当前执行脚本的文件名 |
${BASH_SOURCE} | 当前执行脚本的文件名 |
${BASH_SOURCE[0]} | 等价于${BASH_SOURCE},当前执行脚本的文件名 |
$(dirname path) | 获取path中的路径,并删除最后的文件名 |
$(realpath file) | 获取file的绝对路径 |
其中 $0
可用于 sh
或 bash
,当脚本以 source
方式执行时,$0
失效,此时只能使用${BASH_SOURCE}
cd /root/shell
sh demo.sh
#!/bin/bash
echo $0
# demo.sh
echo ${BASH_SOURCE}
# demo.sh
echo ${BASH_SOURCE[0]}
# demo.sh
echo $(dirname $0)
# .
echo $(realpath $0)
# /root/shell/demo.sh
echo $(dirname $(realpath $0))
# /root/shell
echo $(dirname $(realpath ${BASH_SOURCE}))
# /root/shell
echo $(dirname $(realpath ${BASH_SOURCE[0]}))
# /root/shell
当在 a.sh
中 source b.sh
时,如果 b.sh
中还执行了 source c.sh
,那么:
# a.sh 中的 $0 和 BASH_SOURCE
$0
# a.sh
${BASH_SOURCE[0]}
# a.sh
# b.sh 中的 $0 和 BASH_SOURCE
$0
# a.sh
${BASH_SOURCE[0]}
# b.sh
${BASH_SOURCE[1]}
# a.s
# c.sh 中的 $0 和 BASH_SOURCE
$0
# a.sh
${BASH_SOURCE[0]}
# c.sh
${BASH_SOURCE[1]}
# b.sh
${BASH_SOURCE[2]}
# a.sh
参考地址:
https://blog.csdn.net/zzy570384336/article/details/125719207
https://www.junmajinlong.com/shell/bash_source/