我经常遇到这样的情况,希望提供一些“设置”或“安装”脚本,针对 git 存储库之类的内容,尽管这种情况也可以用于其他情况。
清楚地说一下:“设置脚本”指的是一个脚本,它会放置一些文件、检查一些东西、创建某些依赖关系等等。
问题在于,如果我想要使用相对于脚本的资源,或者想要创建指向存储库中文件的链接,我必须能够引用相对于存储库根目录的资源或构建绝对路径。
目前,我总是采用这种方法:
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
ROOT=$(realpath "$SCRIPT_DIR/..")
但这似乎很糟糕,因为它很难理解并且在每个repo甚至每个文件中都有重复。
有更好的方法吗?像这样的脚本是否不受欢迎?
./script.cfg
-- 当前目录可能不是脚本和配置文件所在的位置,比如如果用户使用绝对路径/path/to/script
而不是cd /path/to; ./script
运行脚本。 - John Kugelmanrealpath
在 Mac 上默认不包含,这意味着ROOT
变量可能未被设置。 - Zebiano