【发布时间】:2015-09-12 10:34:53
【问题描述】:
我正在开发一些需要从 bash 运行一些外部程序的 Java 应用程序。
我首选的方法是使用ProcessBuilder,但我有一些问题。
ProcessBuilder.environment() 返回一个 PATH=/usr/bin:/bin:/usr/sbin:/sbin,我猜这是真正的系统路径。
但是有一个技巧,在我的 OSX 机器上,这些程序安装在 /usr/local/bin 下,而在其他机器上可以完全不同的位置。
我可以用我的路径硬编码environment.put(),但这并不能解决我的跨平台问题。
最好的选择是如果我可以copy-paste bash PATH 如果这是可能的以及如何?
你会采取哪种方法?
- 硬编码最可能的路径并放入 ProcessBuilder
- 读取带有路径信息(.profile、bash_profile、/etc/paths 等)的文件
- 从 shell 复制粘贴 PATH - 如何? (如果可能,Win、Osx、Linux 解决方案)
- 其他?
TL;DR
我想从可以在任何位置的 ProcessBuilder 执行命令,我可以假设命令的路径在 shell PATH env 中。 怎么样?
【问题讨论】:
-
我会选择以下之一:
-
它应该从您启动应用程序的外壳自动继承。也许您只是忽略了导出 PATH?
-
不是。我得到“继承”的是我提到的 PATH=/usr/bin:/bin:/usr/sbin:/sbin 如果重要的话我忘了提到这是桌面应用程序。
标签: java bash shell processbuilder