linux shell脚本获取脚本目录时,$(dirname “${BASH_SOURCE[0]}“)与$(dirname $0)有什么区别?(脚本路径,脚本包含关系,父子脚本)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell脚本获取脚本目录时,$(dirname “${BASH_SOURCE[0]}“)与$(dirname $0)有什么区别?(脚本路径,脚本包含关系,父子脚本)相关的知识,希望对你有一定的参考价值。

$(dirname "$BASH_SOURCE[0]")$(dirname $0)有什么区别?

$(dirname "$BASH_SOURCE[0]")$(dirname $0) 都是用来获取 shell 脚本所在目录的,但它们有一些区别。

$(dirname $0) 获取的是脚本文件名,而 $(dirname "$BASH_SOURCE[0]") 获取的是被引用的文件名。
如果 shell 脚本是被其他脚本包含的,那么 $0 会是包含它的脚本的名字,而 "$BASH_SOURCE[0]" 将是被包含的脚本的名字。

所以在使用 shell 脚本时,建议使用 $(dirname "$BASH_SOURCE[0]") 来获取脚本的真实目录。

参考文章:linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)

以上是关于linux shell脚本获取脚本目录时,$(dirname “${BASH_SOURCE[0]}“)与$(dirname $0)有什么区别?(脚本路径,脚本包含关系,父子脚本)的主要内容,如果未能解决你的问题,请参考以下文章

使用F#代替Linux Shell脚本

linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录脚本目录脚本路径)

调用shell脚本时,获取脚本的当前目录

linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录)

如何在linux中使用shell脚本杀死进程时获取退出代码=0

linux下php脚本怎么执行