所以我有一个 java 类,它接受单独的命令并通过 Runtime 和 Process 对象将它们放入 shell 中。我的问题是我可以运行如下命令:
$ls /users/me/documents
它会起作用,但是
$cd /users/me/documents
$ls
仍然列出根。显然,进程和运行时对象不会跟踪它的位置。有什么方法可以捕获终端对象,或者我必须手动跟踪当前目录吗?
最佳答案
每个 shell 脚本都将重新开始。您需要将所有命令串在一起:
cd /usr/me/documents && ls
cd /usr/me/documents; ls
第一个变体仅在 cd 成功时才运行 ls(因此,如果目录损坏,则 ls 将不会运行)。第二种变体将始终运行 ls (因此,如果目录错误,ls 将在默认目录中运行)。
关于java - 通过java运行Shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972653/