在终端中通过Java中的exec而不是根用户运行命令
我一直在玩exec,虽然它打开了一个终端,用户是我,但它似乎无法执行我给它的命令=/代码如下:在终端中通过Java中的exec而不是根用户运行命令,java,exec,runtime.exec,Java,Exec,Runtime.exec,我一直在玩exec,虽然它打开了一个终端,用户是我,但它似乎无法执行我给它的命令=/代码如下: try{ Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("xterm -e \"source /home/USER/.bashrc; ~/./myscript.sh\"") } catch(Throwable t) t.printStackTrace(); 在xterm控制台中,我得到: xterm: Can't ex
try{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("xterm -e \"source /home/USER/.bashrc; ~/./myscript.sh\"")
}
catch(Throwable t)
t.printStackTrace();
在xterm控制台中,我得到:
xterm: Can't execvp ": No such file or directory
user@user:$
这是一个等待使用的终端,在我按下ctrl-d键之前不会消失
不知道这是怎么回事
谢谢。我认为您无法将shell内容传递到xterm的
-e
选项中。它需要一个程序和该程序的可选参数<代码>源代码是一个内置的shell
您可以尝试做的事情就是调用
myscript.sh
并对其进行修改,以便在顶部生成bashrc。或者创建一个新的bash脚本,该脚本源于您的rc文件,然后运行myscript.sh
如果从调用中取出自定义脚本,然后只源于.bashrc文件,会发生什么?如果这样做有效,可能是脚本中的某些内容导致了问题。这可能是路径问题。请尝试指定xterm的完整路径。嗨,指定xterm的完整路径没有帮助,我收到了相同的消息,只有“usr/bin/xterm:cant…etc”而不是“xterm:cant…etc”