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