- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我刚刚在 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/
我是一名优秀的程序员,十分优秀!