在终端中通过Java中的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

我一直在玩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 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”