java - 使用Java程序设置/创建环境变量,该变量在Linux中执行程序后仍然存在

标签 java linux unix

我需要创建一个java解决方案,它可以使用Java代码创建/设置特定的环境变量。这些新的环境变量将被同一台机器上的另一个 java 程序使用。我找到了可以使用 processbuilder 在同一进程中创建环境变量的代码。

最佳答案

这不是环境变量的工作原理。

环境变量本质上是传递到程序中的一组额外参数。如果该程序依次启动一个新程序,则它可以转发其环境变量,也可以不转发,并且可以在它启动的该程序中设置(或取消设置)任何其他环境变量,也可以不设置;但环境变量不是机器的全局属性,程序无法仅因为它们位于同一台机器上而将环境变量发送到另一个程序。

相反,您需要第一个程序将必要的键值映射存储在主机上某处的文件中,并让第二个程序读取这些映射。

也就是说,您可能会发现使用环境变量作为解决方案的一部分很有帮助;例如,您可以让您的第一个程序以 Bash 将解释为设置环境变量的格式编写键值映射:

export foo=bar
export baz=bip

然后使用 Bash 包装脚本启动第二个程序,该脚本首先提取键值映射 (source file_that_the_first_program_wrote_to.txt),然后执行它。

关于java - 使用Java程序设置/创建环境变量,该变量在Linux中执行程序后仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39939175/

相关文章:

java - 在 springboot 中创建名为 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration 的 bean 时出错

java - 在 switch 中使用数组作为 case 语句

Java XStream Deep Copy 引发异常 ObjectAccessException

java - 将 PostgreSQL JSON 列映射到 Hibernate 实体属性

linux - 如何从 vmlinux 安装 debuginfo 包

windows - Windows XP 和 Unix 中的 kerberos 票证 TGT 和服务票证的路径?

linux - 让(父)进程在 Linux shell 中执行命令

c - 需要将 c 中文件中的值转换为 int/float

bash - 如何删除部分文件名并以编程方式添加扩展名?

perl - 如何使用 Perl 每月轮换日志文件?