这是bash脚本的一部分。
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/framework.sh $@
请有人解释一下这两句话的意思。它看起来像是要转到${BASH_SOURCE}存在的目录中,并将pwd
结果分配给DIR,但是我不能首先理解语法${BASH_SOURCE}。bash中有可变数组吗?第二个问题是为什么它不能
DIR=$( $( dirname "${BASH_SOURCE[0]}" )" )
发布于 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
命令。
https://stackoverflow.com/questions/64804743
复制相似问题