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

时间:2018-01-09 11:22:07

标签: linux bash shell

我有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等。 我想创建无移动脚本而无需永久编辑。

1 个答案:

答案 0 :(得分:1)

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

脚本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"