tags:

views:

93

answers:

3

So I have a java class that takes individual commands and puts them into the shell through the Runtime and Process objects. My problem is that I can run a command like:

$ls /users/me/documents

and it will work, but

$cd /users/me/documents
$ls

still lists the root. Obviously the Process and runtime objects don't keep track of where it is. Is there any way to capture the terminal object, or do I have to keep track of the current directory manually?

+2  A: 

Each shell script is going to start fresh. You will need to string all your command together:

cd /usr/me/documents && ls

cd /usr/me/documents; ls

The first variation will only run ls if the cd was successful (so if the directory was bad, ls will not run). The second variation will always run ls (so if the directory was bad, ls will run in the default directory).

R Samuel Klatchko
Ok so I just keep track of the path and last output or something like that.thanks
piggles
paxdiablo
+2  A: 

You are spawning a separate process for each command. Put the commands into a script and execute it in one process

james
+2  A: 

Everyone who uses Runtime.exec needs to read this.

duffymo