# linux shell aus java öffnen



## DLor (30. Jan 2008)

Hallo Community,

ich suche Hilfe und hoffe Sie hier zu finden.
Ich habe ein Programm, das in der Commandozeile läuft.
Dieses Programm beende ich mit Java, und möchte am liebsten im selben Context bleiben und ein neues startkommando für dieses Programm absetzen.
Geht das überhaupt im selben Context, oder muss ich eine neue shell öffnen und dort mein commando ausführen.
Wie öffne ich dann unter Linux ein neues Terminal o.ä.
Unter windows geht das wie folgt:
C:/WINDOWS/system32/cmd.exe /c start;<zweites Kommando>

Alles sollte automatisiert durch JAVA laufen.

Vielen Dank
DLor


----------



## thE_29 (30. Jan 2008)

Gibts konsole -e BEFEHL?


----------



## DLor (30. Jan 2008)

das ist ja mal eine Antwort...


----------



## Straightflush (30. Jan 2008)

würde mich auch über eine richtige Antwort freuen!


----------



## Professor Chaos (27. Okt 2008)

DLor hat gesagt.:
			
		

> Wie öffne ich dann unter Linux ein neues Terminal o.ä.





			
				thE_29 hat gesagt.:
			
		

> Gibts konsole -e BEFEHL?





			
				Straightflush hat gesagt.:
			
		

> würde mich auch über eine richtige Antwort freuen!


Das folgende sollte eine "richtige" Antwort darstellen:

Falls man unter Linux ein Programm namens PROGRAM mit den Argumenten ARG1, ARG2 und ARG3 starten möchte, macht man das wiefolgt:


```
String[] str = new String[]{"/bin/bash", "-c", "PROGRAM ARG1 ARG2 ARG3"}
Process p = Runtime.getRuntime().exec( str );
```

Was geschieht hier?
Man erstellt einen neuen Prozess, welcher aus der Ausführung *eines* Programmes mit *zwei* Argumenten besteht. Das Programm, welches man startet heißt "/bin/bash", dessen zwei Argumente heißen "-c" sowie "PROGRAM ARG1 ARG2 ARG3".
D.h. den Befehl, um das Programm zu starten, welches man _eigentlich_ ausführen möchte, übergibt man als einen Paramter für die Batch.

Das hat mich drei Stunden Foren-Suche und Rumspielen gekostet, das herauszufinden.^^


----------



## HoaX (27. Okt 2008)

und was ist wenn man keine bash installiert hat? das ist ein unnötiger umweg der nur probleme mit sich bringt, vorallem wenn du z.B. in einem parameter noch ein leerzeichen hast, dann musst du dich da von hand drum kümmern.

richtig wäre 

```
String[] str = new String[]{"PROGRAM",  "ARG1", "ARG2", "ARG3"}
Process p = Runtime.getRuntime().exec( str );
```

wenn man eine grafische konsole möchste eben wie the_29 sagte konsole -e ... bzw allgemeiner: xterm -e ...


----------

