为什么内部unix命令(cd,pwd等)不能使用Runtime.getRuntime().exec()直接在java中运行,如外部命令(chmod,chown等)?
请帮忙解释一下.
因为它们是内置于shell中的,而不是程序本身.
最简单的方法是调用shell并使用-c选项传递命令:
> bash -c pwd /home/foo/bar/baz
......或者用Java:
Runtime.getRuntime().exec("bash -c pwd")
...或更一般地说:
Runtime.getRuntime().exec(new String[]{"bash", "-c", command});
我们需要使用String []变体,否则,如果StringTokenizer包含任何空格,我们的命令将被修改.