2012-03-29 3 views
0

Ich habe mit exec gespielt und obwohl es öffnet ein Terminal mit dem Benutzer ich bin, es scheint nicht in der Lage, Befehle auszuführen Ich gebe es =/Code ist wie folgt:Ausführen von Befehlen in einem Terminal über exec in Java NICHT als root

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

In der xterm Konsole erhalte ich:

xterm: Can't execvp ": No such file or directory 
[email protected]:$ 

die dann ein Terminal wartet verwendet zu werden, und wird, bis ich es nicht weg, ctrl-d.

nicht sicher, was hier los? ...

Dank.

+0

Was passiert, wenn Sie Ihr benutzerdefiniertes Skript aus dem Aufruf herausnehmen und nur Ihre .bashrc-Datei bereitstellen? Wenn das funktioniert, ist es wahrscheinlich etwas in Ihrem Skript, das das Problem verursacht. – robertvoliva

+1

Dies ist wahrscheinlich ein Pfadproblem. Versuchen Sie, den vollständigen Pfad zu xterm anzugeben. –

+0

Hallo, Angabe des vollständigen Pfades zu xterm hat nicht geholfen, ich habe die gleiche Nachricht, nur mit 'usr/bin/xterm: Kann nicht ... etc' statt nur 'xterm: Kann nicht .... etc' – Jarob22

Antwort

0

Ich glaube nicht, dass Sie Shell-Zeug in xterm -e Option übergeben können. Es möchte ein Programm und optionale Parameter für dieses Programm. source ist eine integrierte Shell.

Etwas, was Sie versuchen können, ist nur Ihre myscript.sh aufrufen und ändern, so dass es Ihre bashrc an der Spitze. Oder erstellen Sie ein neues Bash-Skript, das Ihre RC-Datei dann myscript.sh ausgibt.

Verwandte Themen