通过java运行Shell脚本

时间:2009-12-29 02:43:07

标签: java bash shell

所以我有一个java类,它接受单独的命令并通过Runtime和Process对象将它们放入shell中。我的问题是我可以运行如下命令:

$ls /users/me/documents

它会起作用,但

$cd /users/me/documents
$ls

仍然列出了根目录。显然,Process和运行时对象不会跟踪它的位置。有没有办法捕获终端对象,还是我必须手动跟踪当前目录?

3 个答案:

答案 0 :(得分:2)

每个shell脚本都将重新开始。您需要将所有命令串在一起:

cd /usr/me/documents && ls

cd /usr/me/documents; ls

如果cd成功,第一个变体只运行ls(所以如果目录不好,ls将不会运行)。第二个变体将始终运行ls(所以如果目录不好,ls将在默认目录中运行)。

答案 1 :(得分:2)

您正在为每个命令生成一个单独的进程。将命令放入脚本并在一个过程中执行

答案 2 :(得分:2)

使用Runtime.exec的每个人都需要阅读this