【问题标题】:Running commands in a terminal via exec in Java NOT as root在终端中通过 exec 在 Java 中运行命令而不是 root
【发布时间】:2012-03-29 16:23:38
【问题描述】:

我一直在玩 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 之前不会消失。

不确定这里发生了什么?...

谢谢。

【问题讨论】:

  • 如果您从调用中取出您的自定义脚本,并且只获取您的 .bashrc 文件,会发生什么情况?如果可行,则可能是您的脚本中的某些内容导致了问题。
  • 这可能是路径问题。尝试指定 xterm 的完整路径。
  • 嗨,指定 xterm 的完整路径没有帮助,我有同样的信息,只有 'usr/bin/xterm: Can't...etc' 而不是 'xterm:不能……等等'

标签: java exec runtime.exec


【解决方案1】:

我认为您不能将 shell 内容传递给 xterm 的 -e 选项。它需要一个程序和该程序的可选参数。 source 是一个内置的 shell。

您可以尝试做的只是调用您的myscript.sh 并对其进行修改,以便它在顶部获取您的 bashrc。或者创建一个新的 bash 脚本来获取你的 rc 文件,然后运行 ​​myscript.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2012-06-25
    • 2017-12-05
    • 1970-01-01
    • 2013-09-28
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多