首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在bash脚本中"${BASH_SOURCE[0]}“和$( cd $( dirname "xxx”& pwd )的含义)

在bash脚本中"${BASH_SOURCE[0]}“和$( cd $( dirname "xxx”& pwd )的含义)
EN

Stack Overflow用户
提问于 2020-11-12 13:23:30
回答 1查看 1.1K关注 0票数 0

这是bash脚本的一部分。

代码语言:javascript
运行
复制
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/framework.sh $@

请有人解释一下这两句话的意思。它看起来像是要转到${BASH_SOURCE}存在的目录中,并将pwd结果分配给DIR,但是我不能首先理解语法${BASH_SOURCE}。bash中有可变数组吗?第二个问题是为什么它不能

代码语言:javascript
运行
复制
DIR=$( $( dirname "${BASH_SOURCE[0]}" )" )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-12 13:43:39

第一行给出了脚本的绝对路径,而不是相对路径。相对路径类似于somedir/myscript.sh,您不知道somedir在哪里。绝对路径类似于/home/seumasmac/somedir/myscript.sh,在这里我们确切地知道脚本在文件系统上的位置。

${BASH_SOURCE[0]}包含用于调用脚本的路径。因此,它可能返回类似于somedir/myscript.sh的内容。它类似于$0,主要的区别在于它在脚本来源而不是直接调用时也能工作。

如果您使用dirname somedir/myscript.sh,它将只返回somedir。因此,相反,脚本将cd转换为somedir,然后运行pwd。它为目录提供了完整的绝对路径。

第二行包括来自同一个目录的framework.sh,使用source命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64804743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档