Запуск команд в терминале через exec в Java НЕ от имени root - PullRequest
0 голосов
/ 29 марта 2012

Я поигрался с exec, и хотя он открывает терминал с пользователем, которым я являюсь, он не может выполнять команды, которые я ему даю = / code выглядит следующим образом:

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:$

Который является тогда терминалом, ожидающим использования, и не уйдет, пока я не нажму на него.

Не уверен, что здесь происходит? ...

Спасибо.

1 Ответ

0 голосов
/ 04 июля 2012

Не думаю, что вы можете передать содержимое оболочки в опцию xterm -e. Он хочет программу и дополнительные параметры для этой программы. source - это встроенная оболочка.

Что-то, что вы можете попробовать сделать, это просто позвонить вашему myscript.sh и изменить его так, чтобы он стал источником вашего bashrc сверху. Или создайте новый bash-скрипт, который будет источником вашего rc-файла и затем запускает myscript.sh.

...