我有一个包含以下行的脚本:
hash git >/dev/null 2>&1 || { echo >&2 "Git is not installed"; exit 2; }
已安装断言git
,如果没有,则退出。我想用Java运行它:
new ProcessBuilder("script.sh", "0").start().waitFor()
该进程总是退出,因为找不到git
,即使它在bash中运行完全正常(因为它已安装)。
编辑:与command -v
和Runtime.getRuntime().exec(..)
(所有组合)相同
答案 0 :(得分:0)
似乎您的$PATH
变量并非来自ProcessBuilder
方法创建的新上下文。
由于您的脚本执行正常并且不会引发错误,即使它显示意外结果,似乎hash
已被识别,但您的通话无法知道在哪里查看对于git
可执行文件
尝试使用函数的完整路径重写脚本,以便java能够找到可执行文件,即/usr/bin/git