![有没有办法获取 bash 脚本的当前代码工作区名称?](https://linux22.com/image/183335/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%8E%B7%E5%8F%96%20bash%20%E8%84%9A%E6%9C%AC%E7%9A%84%E5%BD%93%E5%89%8D%E4%BB%A3%E7%A0%81%E5%B7%A5%E4%BD%9C%E5%8C%BA%E5%90%8D%E7%A7%B0%EF%BC%9F.png)
在linux环境中,我在目录下创建git存储库 -
/myspace/darshan/repositories
因此,我将要处理的每个功能或错误都会有单独的 git 存储库。
我将有一些在不同存储库中相同的常见任务,例如 -
building an image
copy an image
going to my component directory
ETC
除存储库名称的根目录外,所有这些都位于同一路径中。即,假设构建图像将位于以下位置 -
/myspace/darshan/repositories/<feature>/bin/sys/
存储库之间唯一改变的是目录
我想为我上面提到的任务编写一些别名 -
build
cp_image
goto_comp
我希望所有这些别名都能正常工作,无论我在工作区中的深度如何,无论我在哪个工作区下。
我怎样才能创建这个设置?
答案1
一种可能的方法是使用git rev-parse --show-toplevel
它将输出当前存储库的基目录。因此,从 git 存储库的任何子目录中,$(git rev-parse --show-toplevel)
都将是该存储库的基目录,并且
cd $(git rev-parse --show-toplevel)/bin/sys
将始终带您到bin/sys
当前存储库的子目录。
在 git 存储库之外使用它时要小心——你应该首先检查你是否确实在其中;git rev-parse --show-toplevel
如果它在 git 存储库之外运行,将以非零退出代码退出,因此您可以使用它。