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)有什么区别?(脚本路径,脚本包含关系,父子脚本)的主要内容,如果未能解决你的问题,请参考以下文章
linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录脚本目录脚本路径)
linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录)