【发布时间】:2012-12-24 14:19:33
【问题描述】:
我可以通过RunTime 类运行 Linux 命令。
有没有办法以编程方式从 Java 设置 Linux 全局环境?
我想通过 Java 模拟以下 Linux 命令语句
root@machine:/tmp# export TEST=v2
我使用了如下的 ProcessBuilder,但 TEST 变量没有改变。
ProcessBuilder pb = new ProcessBuilder("/bin/bash","-c","export TEST=v3" + "&& exec");
更新: 实际上,我的最终目标是使用 EMAIL_NAME 环境作为电子邮件地址,当我的应用程序和机器都启动并停止时,这些操作将发送到 EMAIL_NAME。 在那种情况下,我知道不可能在纯 Java 代码上设置 linux 全局环境。所以我有一个变通的解决方案是 EMAIL_NAME 将保存在一个文件中,它将被 linux 脚本或 java 代码更新或读取。
【问题讨论】:
-
这里的
Linux命令是什么意思? -
如果您使用
ProcessBuilder,您可以使用.environment()获得一个可变的环境映射并修改该映射——当然,在执行命令之前。 -
类似的答案:stackoverflow.com/questions/580085/… - 虽然使用
ProcessBuilder只会为所有分叉进程设置环境(进程由于从 Java 进程调用而运行)。 -
这里有一个关于这个主题的长时间讨论:stackoverflow.com/questions/318239/…