脚本中的`hash`无法与Process正常运行

时间:2017-07-28 08:45:49

标签: java bash process

我有一个包含以下行的脚本:

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 -vRuntime.getRuntime().exec(..)(所有组合)相同

1 个答案:

答案 0 :(得分:0)

似乎您的$PATH变量并非来自ProcessBuilder方法创建的新上下文。

由于您的脚本执行正常并且不会引发错误,即使它显示意外结果,似乎hash已被识别,但您的通话无法知道在哪里查看对于git可执行文件

尝试使用函数的完整路径重写脚本,以便java能够找到可执行文件,即/usr/bin/git