在java中运行内部和外部unix命令之间的区别 [英] Difference between running internal and external unix commands in java

查看:165
本文介绍了在java中运行内部和外部unix命令之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么内部unix命令(cd,pwd等)不能像使用Runtime.getRuntime()。exec()的外部命令(chmod,chown等)直接在java中运行?

Why can't internal unix commands (cd, pwd, etc) be run directly in java like external commands (chmod, chown, etc) using Runtime.getRuntime().exec() ?

请帮忙解释。

推荐答案

因为它们内置于shell中,而不是程序

Because they are built into the shell, rather than being programs in and of themselves.

最简单的方法是调用shell并使用-c选项传递命令:

The simplest thing to do is to invoke the shell and pass the command in using the -c option:

> bash -c pwd
/home/foo/bar/baz

...或者Java:

... or in Java:

Runtime.getRuntime().exec("bash -c pwd")

...或更一般地说:

... or more generally:

Runtime.getRuntime().exec(new String[]{"bash", "-c", command});

我们需要使用String []变体,否则,我们的命令会被StringTokenizer破坏它包含任何空格。

We need to use the String[] variant, otherwise, our command will get mangled by the StringTokenizer if it contains any whitespace.

这篇关于在java中运行内部和外部unix命令之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆