source执行脚本如何获取脚本名称

source执行脚本如何获取脚本名称

作者:Rhett Bai发布时间:2026-03-03阅读时长:0 分钟阅读次数:2

用户关注问题

Q
如何在使用source命令时获取当前执行的脚本名称?

当我使用source命令执行脚本时,如何能在脚本内部获取该脚本的名称?

A

在source执行的脚本中获取脚本名称的方法

source命令执行的脚本会在当前shell环境中运行,$0通常表示调用shell的名称而非脚本名称。要获取被source执行脚本的名称,可以使用特殊变量BASH_SOURCE[0],它会返回当前执行脚本的路径和名称。示例:可以在脚本中使用echo "${BASH_SOURCE[0]}"来打印脚本名称。

Q
source执行脚本导致$0变量值改变吗?

使用source执行一个脚本时,脚本内部的$0变量会不会显示脚本名?

A

source执行脚本时$0变量的表现

通过source执行脚本不会改变$0变量的值,$0的值仍然是启动shell的名称而非被source的脚本名称。因此,无法通过$0直接获取脚本名称,应考虑使用BASH_SOURCE数组变量。

Q
在shell脚本中如何区分是被source执行还是直接执行?

怎样判断shell脚本是被source命令执行还是作为独立脚本执行?

A

检测脚本执行方式的技巧

可以通过比较$0和BASH_SOURCE[0]的值来判断。如果两者相同,说明脚本是被直接执行的;如果不同,说明脚本是被source命令执行的。例如,if [[ "$0" != "${BASH_SOURCE[0]}" ]]; then echo "脚本被source执行"; else echo "脚本被直接执行"; fi。