2012-03-29 2 views
0

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

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 
[email protected]:$ 

Что тогда терминал ждет, чтобы использовать, и не уйдет, пока я не чтрл-d это.

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

Спасибо.

+0

Что произойдет, если вы выберете свой собственный скрипт из вызова и просто отправьте свой .bashrc-файл? Если это работает, вероятно, что-то в вашем скрипте вызывает проблему. – robertvoliva

+1

Это, скорее всего, проблема пути. Попробуйте указать полный путь к xterm. –

+0

Привет, указав полный путь к xterm, не помогло, у меня есть одно и то же сообщение, только с 'usr/bin/xterm: Can not ... и т. Д. Вместо вместо xterm: Can not .... и т.д' – Jarob22

ответ

0

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

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