【发布时间】:2020-10-15 02:15:17
【问题描述】:
我经常遇到这样的情况,即我想为 git 存储库之类的东西提供某种“设置”或“安装”脚本,尽管它也可以用于其他情况。
明确一点:“设置脚本”是指放置一些文件、检查一些东西、创建某些依赖项等的脚本。
问题是,如果我想使用与脚本相关的资源,或者想创建以存储库中的文件为目标的链接,我需要能够引用相对于存储库根目录的资源或构建绝对路径。
目前我总是这样:
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
ROOT=$(realpath "$SCRIPT_DIR/..")
但这似乎真的很糟糕,因为它很难理解并且基本上在每个 repo 甚至文件中都被复制了。
有没有更好的方法来做到这一点?这样的脚本不需要吗?
【问题讨论】:
-
这适用于通用脚本目录(我确实使用类似的东西),但在我的情况下,我说的是每个存储库一个脚本,应该可以放在任何地方。
-
@Philippe 问题是如何编写一个脚本来引用与脚本位于同一目录中的文件。这是一个常见的问题。假设脚本有一个相关的配置文件位于它旁边。它不能简单地打开
./script.cfg——当前目录可能不是脚本和配置文件所在的位置,比如用户是否使用/path/to/script而不是cd /path/to; ./script这样的绝对路径运行脚本。