0

我正在使用 Clojure 库来简化我的项目的子流程管理。它本质上ProcessBuilder以更 Clojuric 的方式包装了 Java。我想做的一件事是捕获任何丢失的命令——也就是说,如果用户想this-command-not-found用作 shell 命令,我的代码应该抛出异常。

不过,看起来这很难或不可能ProcessBuilder。我是否需要以某种方式获取用户$PATH并在那里搜索以检查有效命令,还是有更好的方法?

编辑:这应该在启动该过程的情况下完成 - 请参阅下面的评论。

4

3 回答 3

2

是的,当然有比搜索更好的方法$PATH:只需运行用户要求您运行的命令即可。使用 ProcessBuilder 或任何其他机制,没有更智能的解决方案是可能的,因为用户可以使用的 shell 集是开放式的,并且不需要他们的 shell 甚至具有$PATH供您搜索的概念。你所能做的就是尽你最大的努力去做用户想要的,如果发生错误,让他们知道。

于 2013-02-05T06:17:52.133 回答
0

ProcessProcessBuilder.start().

然后您可以Process.getErrorStream()在 Windows 下阅读并检查

'this-command-not-found' is not recognized as an internal or external command, operable program or batch file.

于 2013-02-05T00:51:33.370 回答
0

您可能可以which使用 ProcessBuilder 执行命令以了解命令是否存在。这需要which存在于系统上。

于 2013-02-05T06:11:36.093 回答