java - 如何调用 Linux shell 并为其设置 PATH?

标签 java linux shell path

我想在 LINUX 中打开默认的/或 xterm (任何 Shell),我用 ubuntu 12.xx 做到了这一点, 我可以调用 xterm shell,但是当我想设置它的路径时,它说: 错误:无法执行/“路径”:没有权限 如何设置 xterm 或我在 JAVA 中调用的任何 shell 的路径?

else  {
            String path = getCurrentFolderName().toString();
            //Runtime r = Runtime.getRuntime();

            String[] shellcom = {"xterm",  path };
            //r.exec(shellcom).waitFor();
            Process p ;
            ProcessBuilder builder = new ProcessBuilder();
            //builder.directory(new File(path));
            builder = new Process Builder(shellcom);                
            p = builder.start();

              }
    }
        catch (IOException e) {
            System.err.println(e.toString());
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
}

最佳答案

您应该在创建ProcessBuilder之后设置目录。以前没有。

        String[] shellcom = {"xterm"};
        Process p ;
        //builder.directory(new File(path));        // not here.
        builder = new ProcessBuilder(shellcom);                
        builder.directory(new File(path));          // here.
        p = builder.start();

另请注意,您不应将路径添加到字符串数组shellcom。如果您这样做,路径将作为参数传递给 xterm,xterm 将假定它是一个应该执行的程序,从而导致错误 xterm: Could not exec/your/path/here: Permission returned

关于java - 如何调用 Linux shell 并为其设置 PATH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919291/

相关文章:

java - Jtable 列中的复选框问题

c++ - boost JSON 解析器在 MacOS 上转义引号,但在 Linux 上不转义

linux - 编写多个 sed 命令的更简洁的方法?

java - 如何在给定起点坐标的情况下找到最近的目标?

java - 使用java和命令提示符写入文件

Java 封装和 OOP 最佳实践

linux - 使用 sed 替换许多文件中的 Windows 换行符 - 但它不会

python - 将参数从 shell 脚本传递到 Python 脚本,而无需在命令行上指定参数

bash - 使用 sh 解释器运行时读取用户输入的脚本未运行

c++ - 使用 qmake 执行 shell 命令