Java System.getEnv()

Java System.getEnv(),java,variables,environment,getenv,Java,Variables,Environment,Getenv,在mac OSX和Linux CentOS中,我使用.bashrc和.bash_profile插入了一个新的系统环境变量(即“MYAPP”)。我甚至重新启动了我的笔记本电脑(mac)和服务器(linux) 当我使用命令行“env”时,该环境变量以正确的值显示。但不知何故,每次我试图在mac或linux中的Java应用程序(桌面应用程序或web应用程序或EJB或servlet任何其他Java应用程序)中获取它时,都无法检索该环境变量(“MYAPP”) 我试着遍历Java可以检索的整个环境变量,结果

在mac OSX和Linux CentOS中,我使用.bashrc和.bash_profile插入了一个新的系统环境变量(即“MYAPP”)。我甚至重新启动了我的笔记本电脑(mac)和服务器(linux)

当我使用命令行“env”时,该环境变量以正确的值显示。但不知何故,每次我试图在mac或linux中的Java应用程序(桌面应用程序或web应用程序或EJB或servlet任何其他Java应用程序)中获取它时,都无法检索该环境变量(“MYAPP”)

我试着遍历Java可以检索的整个环境变量,结果发现它检索除“MYAPP”之外的所有环境变量。这很奇怪


有人知道如何解决这个问题吗?

您是否导出MYAPP=…?导出变量使其可用于子进程,如shell运行的java。

在Linux中,如果您仅在bash会话中设置变量(或导出变量),则它将可用于某种“子”会话,该会话仅可用于您刚刚执行的命令,而不可用于其他任何操作

您可能会使用(也称为“源”命令)。从页面:

当脚本使用“source”运行时,它在现有shell中运行,脚本创建或修改的任何变量在脚本完成后都将保持可用

所以你可以试着去做。export VARIABLE=value,然后运行java程序。这类似于在Windows终端中设置一个变量,然后打开一个新终端,并期望env var出现在那里。不会的


这样,您就告诉bash“这个命令应该在这个特定会话(会话的进程)中可用”。否则,您会告诉它“为bash会话设置此环境变量,该会话将在我运行此导出命令后结束”,因此,在您运行Java程序时,它将不存在。

在定义并导出环境变量之后。从同一终端启动IDE。

尝试写入


“$System.env.STOREPWD”

请发布一段您尝试过的代码片段。显而易见的答案是,无论您使用什么来启动Java应用程序,都不会使用与您将环境变量添加到其bashrc/bash_配置文件中的帐户相关联的环境设置。也许你把它们加入了错误的账户?