我们的git repo代码集中有几个配置文件和bash脚本需要设置目录路径。它们应该全部来自回购所在的位置。换句话说,我将我的回购邮件放在/home/userMe
,但您将其放在/home/userYou/code/
。
如何构建bash脚本以便它们:
答案 0 :(得分:0)
执行此操作的常用方法是scripts to know where they are located,例如使用dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
。这样,每个必须引用同一存储库中另一个脚本的脚本都可以通过对树的同一部分中的文件使用"${dir}/foo/bar"
样式路径来实现,而对于具有相同祖父目录的文件使用"$(dirname -- "$(dirname -- "$dir")")/foo/bar"
。这是必要的(但不一定足够)使您的脚本可以在任何地方执行。
当然,您可以source
在存储库顶层执行相同操作的脚本。然而,实际上更多复杂,因为每个脚本仍然必须能够相对于自己找到该脚本,此时它可能也知道它自己的位置。