如何在相对路径中包含bash脚本?

基里尔·鲁德

我有3个脚本:

脚本A:

echo "Hey you!"

脚本B:

source ./A.sh

脚本C:

source ./libs/B.sh

因此,文件夹“ libs”中的脚本A和B和脚本C使用此目录中的脚本B。

脚本C抛出错误:

./libs/B.sh:第1行:./A.sh:没有这样的文件或目录

在这种情况下,如何正确使用脚本“包括”?

我知道为什么会发生此错误,但我不知道如何解决它。也!我不想以完整路径包含/home/.../libs/A.sh等。我想创建无需移动的脚本而无需进行永久编辑。

iBug

您可以指定脚本本身的目录。默认情况下,单个点表示“当前工作目录”。

脚本B,修改版本:

source "$(dirname "$0")/A.sh"

建议对C使用相同的mod:

source "$(dirname "$0")/libs/B.sh"

您也可以使用${0##*/}与以下相同的效果$(dirname "$0")

或者,要确保它是脚本的完整路径,请使用${BASH_SOURCE[0]}

脚本B,修改为:

source "$(dirname "${BASH_SOURCE[0]}")/A.sh"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章