2012-03-29 51 views
0

我使用exec玩弄,雖然它打開與用戶是我的一個終端,它似乎並沒有能夠執行我給它的命令= /代碼如下:通過EXEC在Java中運行在終端的命令而不是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]:$ 

,然後等待被使用的終端,而不會消失,直到我按ctrl-d它。

不確定這是怎麼回事?...

謝謝。

+0

如果您從調用中取出自定義腳本並只輸入您的.bashrc文件,會發生什麼情況?如果這有效,那麼在你的腳本中可能會導致問題。 – robertvoliva 2012-03-29 16:32:57

+1

這可能是一個路徑問題。嘗試指定xterm的完整路徑。 – 2012-03-29 16:40:44

+0

嗨,指定到xterm的完整路徑沒有幫助,我有同樣的信息,只有'usr/bin/xterm:Can not ... etc'而不是'xterm:Can not ....等等' – Jarob22 2012-03-30 08:58:54

回答

0

我不認爲你可以通過外殼的東西進入的xterm的-e選項。它需要該程序的程序和可選參數。 source是內置的外殼。

有些事情,你可以嘗試做的是剛剛打電話給你myscript.sh,因此它在頂部源您的.bashrc修改它。或創建源的RC文件,然後運行myscript.sh一個新的bash腳本。

相關問題