可能重复:
bash 脚本获取自身完整路径的可靠方法?
我有 bash 脚本test.sh
,它通过以下几行使用另一个search.sh
脚本中的函数:
source ../scripts/search.sh
<call some functions from search.sh>
这两个脚本都位于 git 存储库中。search.sh
在<git_root>/scripts/
目录中,test.sh
位于同一目录中(但一般来说,可以位于<git_root>
目录内的任何位置 - 我的意思是我不能依赖以下source search.sh
方法)。
当我从一切正常调用test.sh
脚本时<git_root>/scripts/
,但只要我更改当前工作目录test.sh
就会失败:
cd <git_root>/scripts/
./test.sh //OK
cd ..
./scripts/test.sh //FAILS
./scripts/test.sh: line 1: ../scripts/search.sh: No file or directory ...
因此我所拥有的:
search.sh
脚本到<git_root>
目录的相对路径
我想要什么:能够test.sh
从内部任何地方运行<git_root>
而不会出错。
PS:无法使用永久绝对路径,search.sh
因为 git 存储库可以克隆到任何位置。