gpt4 book ai didi

Bash 脚本 : referencing a folder path from the script folder, 而不是我运行它的地方

转载 作者:IT王子 更新时间:2023-10-29 06:04:40 25 4
gpt4 key购买 nike

我刚刚在 redis install_server 中遇到了一个错误 script它有一个硬编码:

DEFAULT_CONFIG="../redis.conf"

所以当这个脚本不是从它自己的文件夹运行时(例如./utils/install_server.sh)脚本找不到 conf 文件。

我正在寻找一种方法来引用脚本文件夹,而不依赖于从何处调用脚本。

我调查了 this answer这似乎是 SO 的规范,但对我来说有些失败:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $DIR

我得到:

./utils/install_server.sh: 100: ./utils/install_server.sh: Bad substitution /home/myusername/binaries/redis-2.8.3 #where I run the script from..not the folder I need

所以我想我做错了什么,或者这不是我的正确答案

我知道我可以检查文件是否存在,并向 redis 安装脚本添加更清晰的错误消息,但我宁愿让它工作。

我会很高兴有想法,我会向 redis 发起 PR 来为每个人解决这个问题..

谢谢!

最佳答案

我做了一些与您发布的非常相似的事情:

SCRIPT_DIR="$(cd $(dirname $0) && pwd)"

在您的情况下,BASH_SOURCE 似乎有问题。在我的方法中,我使用 $0,它始终计算为用于启动脚本的完整路径名。

我不确定您的脚本中 BASH_SOURCE 的问题是什么,因为您发布的内容对我有用。因此,我只是提供一种替代方法。

关于Bash 脚本 : referencing a folder path from the script folder, 而不是我运行它的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com