How to include bash scripts with relative path?
本问题已经有最佳答案,请猛点这里访问。
我有3个脚本:
脚本A:
1 | echo"Hey you!" |
脚本B:
1 | source ./A.sh |
脚本C:
1 | source ./libs/B.sh |
所以脚本A和B在文件夹"libs"中,脚本C使用这个目录中的脚本B。
脚本C引发错误:
./libs/B.sh: line 1: ./A.sh: No such file or directory
在这种情况下,如何更正使用脚本"including"?
我理解为什么会发生这个错误,但我不理解如何修复它。也!我不想包括完整路径as/home/…/libs/a.sh等。我想创建无需永久编辑的移动自由脚本。
您可以指定脚本本身的目录。默认情况下,单个点表示"当前工作目录"。
脚本B,修改版本:
1 | source"$(dirname"$0")/A.sh" |
建议C使用相同的型号:
1 | source"$(dirname"$0")/libs/B.sh" |
您也可以使用
或者,要确保它是脚本的完整路径,请使用
脚本B,修改:
1 | source"$(dirname"${BASH_SOURCE[0]}")/A.sh" |