首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找包含“`echo ${BASH_SOURCE[0]}”的脚本仍然显示源脚本的路径名

查找包含“`echo ${BASH_SOURCE[0]}”的脚本仍然显示源脚本的路径名
EN

Unix & Linux用户
提问于 2018-11-14 21:26:00
回答 1查看 7.7K关注 0票数 4

我有一个bash脚本,它输出脚本本身的路径名。

代码语言:javascript
复制
$ cat f4.sh 
#! /bin/bash    
echo "${BASH_SOURCE[0]}"

我设想,如果我在另一个脚本中源脚本并运行另一个脚本,它将输出另一个脚本的路径名,因为源代码就像将源脚本的内容复制到源脚本并运行源脚本一样。

但是我错了,它仍然输出原始脚本的路径名。

代码语言:javascript
复制
$ cat ff.sh 
#! /bin/bash
source ../f4.sh

$ bash ff.sh 
../f4.sh

为什么?

我想知道另一个脚本是否可以通过使用f4.sh而不是直接使用${BASH_SOURCE[0]}来输出它的路径名?谢谢。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-11-14 21:34:01

在这种情况下,如果您想从BASH_SOURCE获取主脚本的路径名,就必须使用${BASH_SOURCE[1]}

对于每个级别的资源,都会在BASH_SOURCE数组的开头添加一个新元素,以便${BASH_SOURCE[0]}始终是当前源文件,而${BASH_SOURCE[1]}则是它的源文件(如果来源,则${BASH_SOURCE[2]}是它的源文件)。要获得主脚本,请查看最后一个元素${BASH_SOURCE[-1]}

获取脚本并不会将脚本的内容完全复制到主脚本中。这就像运行一个普通脚本,但它在与主脚本相同的环境中执行。它更类似于执行一个函数。

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

https://unix.stackexchange.com/questions/481803

复制
相关文章

相似问题

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