所以我有一个java类,它接受单独的命令并通过Runtime和Process对象将它们放入shell中。我的问题是我可以运行如下命令:
$ls /users/me/documents
它会起作用,但
$cd /users/me/documents
$ls
仍然列出了根目录。显然,Process和运行时对象不会跟踪它的位置。有没有办法捕获终端对象,还是我必须手动跟踪当前目录?
答案 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。