2012-03-29 9 views
0

私はexecで遊んでいましたが、ユーザが私である端末を開いてもコマンドを実行できないようです。 /コードは次のとおりです。私が手xtermのコンソールでJavaでexecを介して端末でコマンドを実行すると、ルートとしてではなく

try{ 
    Runtime rt = Runtime.getRuntime(); 
    Process proc = rt.exec("xterm -e \"source /home/USER/.bashrc; ~/./myscript.sh\"") 
} 
catch(Throwable t) 
    t.printStackTrace(); 

を:

使用されるのを待っている端末は、その後で、私はCTRL-Dまでそれを離れて行くことはありません
xterm: Can't execvp ": No such file or directory 
[email protected]:$ 

ここで何が起こっているのかわかりません...

ありがとうございます。

+0

呼び出しからカスタムスクリプトを取り出し、.bashrcファイルのソースを取得するとどうなりますか?それがうまくいけば、それはおそらく問題の原因となっているスクリプト内のものです。 – robertvoliva

+1

これはおそらくパスの問題です。 xtermのフルパスを指定してみてください。 –

+0

こんにちは、xtermへのフルパスを指定しても助けにならなかったので、私は同じメッセージを 'usr/bin/xterm:Can not ... etc'の代わりに 'xterm:Can not ....等' – Jarob22

答えて

0

xtermの-eオプションにシェルのものを渡すことはできません。それはそのプログラムのためのプログラムとオプションのパラメータを必要とします。 sourceはシェルが内蔵されています。

あなたがやってみることができることは、あなたのmyscript.shを呼び出して、bashrcが一番上に来るように修正することです。または、rcファイルをソースとする新しいbashスクリプトを作成し、myscript.shを実行します。