在Java 1.8程序中,如何在用户的PATH上执行程序?为简单起见,我们假设只需要支持* nix系统。我想做的是:
Runtime.getRuntime().exec("myProgram")
其中myProgram
位于用户路径的某个位置。
Runtime.getRuntime().exec(cmd)
只能“看到”系统路径上的程序。例如在我的情况下(mac os)/usr/bin:/bin:/usr/sbin:/sbin
,但如果myProgram
位于/usr/local/bin
或~/bin
,该怎么办?
我试图通过解析Runtime.getRuntime().exec("echo $PATH")
的输出来获取用户PATH上的目录,但我只返回字符串“$ PATH”本身,而不是PATH变量的实际内容。
编辑执行System.getenv()
只给我PATH=/usr/bin:/bin:/usr/sbin:/sbin
,即不是用户的路径。
答案 0 :(得分:1)
如果您想获得PATH变量的实际内容,可以使用:
System.getenv():
祝你好运!
答案 1 :(得分:0)
String userPath = System.getenv("PATH");
如果它返回一个空字符串,那么在运行java程序之前尝试导出该$ PATH变量。