`hash`脚本不处理

`hash`脚本不处理

问题描述:

正常运行,我有一个脚本与以下行:`hash`脚本不处理

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

我不熟悉java调用系统子进程的方式,但是您确定PATH变量是来源于新创建的环境?也许尝试'bash script.sh'? – Aserre

+0

@Aserre我也试过:'新的ProcessBuilder(“/ bin/bash”,...)'。即使当我在'Process.getR()。exec(c,env)'中设置'PATH',它也不起作用。我认为问题是'散列',因为'睡眠100'在它运行良好之前并没有。 –

+0

@Aserre一个完整的'PATH'(如'echo $ PATH')工作!做出这个答案,以便我可以标记它 –

好像你$PATH变量没有被ProcessBuilder方法创建新的上下文来源。

当你的脚本执行很好,不会引发错误,即使它显示了一个意外的结果,似乎hash被确认,但是你的电话不知道去哪里找为git可执行

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

+0

取出'echo $ PATH'的输出并在Runtime.getRuntime()。exec(command,new String [] {})''中使用它。 –