Java 运行 bash 脚本,找不到命令



我尝试使用 java 运行一些 bash 脚本并将终端输出存储在字符串中。但是,有很多命令不能以这种方式工作。它一直显示找不到命令,但我可以在终端、前节点 --version、go --version 中正确运行这些命令。我想是路径问题,但不知道如何解决它。

另一个问题,当我运行"python --version"时,它显示"Python 2.7.10",但它在getErrorStream中。谁能给我一些提示?

public static void runscript() throws IOException {
    Runtime rt = Runtime.getRuntime();
    String[] commands = { "/bin/bash", "-c", "node --version" };
    Process proc = null;
    try {
        proc = rt.exec(commands);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
    // read the output from the command
    System.out.println("Here is the standard output of the command:n");
    String s = null;
    while ((s = stdInput.readLine()) != null) {
        System.out.println(s);
    }
    // read any errors from the attempted command
    System.out.println("Here is the standard error of the command (if any):n");
    while ((s = stdError.readLine()) != null) {
        System.out.println(s);
    }
}

回复@VishalKamat评论。
当我尝试使用"哪个节点"的输出作为我的路径时,即"/usr/local/bin/node"。它有效!!
但是,这是否意味着当我需要获取不同的应用程序版本信息时,我必须更改路径?我以为我可以很容易地像在终端中一样获取信息。

我尝试以这种方式通过java打印$PATH

String[] commands = { "/bin/bash","-c", "$PATH" };

错误消息是:

/bin/bash: /usr/bin:/bin:/usr/sbin:/sbin: No such file or directory

相关内容

  • 没有找到相关文章

最新更新