2

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

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

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

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

4

4 回答 4

1

Did you export MYAPP=...? Exporting the variable makes it available to child processes, like java being run by your shell.

于 2012-08-07T02:05:14.910 回答
1

定义并导出环境变量后。从同一个终端启动您的 IDE。

于 2013-12-31T19:36:43.223 回答
1

在 Linux 中,如果您仅在 bash 会话中设置变量(或导出它),它将可用于一种“子”会话,该会话仅可用于您刚刚执行的命令,而没有其他任何东西。

您可能可以在 bash 中使用点运算符(也称为“源”命令)。从页面:

当使用 `source' 运行脚本时,它在现有 shell 中运行,脚本创建或修改的任何变量在脚本完成后仍然可用。

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

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

于 2012-08-07T16:39:45.493 回答
0

试着写

"$System.env.STOREPWD"

于 2016-02-29T10:49:52.250 回答