在mac OSX和Linux CentOS中,我使用.bashrc&amp ;;插入一个新的系统环境变量(即“MYAPP”)。 .bash_profile中。我甚至重新启动了我的笔记本电脑(mac)和我的服务器(linux)。
当我使用命令行“env”时,该环境变量显示正确的值。但不知何故,每当我尝试在mac或linux中的Java应用程序(桌面应用程序或Web应用程序或EJB或servlet中的任何其他Java应用程序)中获取它时,都不会检索该环境变量(“MYAPP”)。
我试图遍历Java可以检索的整个环境变量,结果发现它检索除“MYAPP”之外的所有环境变量。这很奇怪。
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
你有export MYAPP=...
吗?导出变量使其可用于子进程,例如由shell运行的java。
答案 1 :(得分:1)
在Linux中,如果您只在bash会话中设置变量(或将其导出),它将可用于某种“子”会话,该会话仅对您刚刚执行的命令可用,而不是其他任何会话。
您可以使用dot operator in bash(也称为“源”命令)。从页面:
当使用`source'运行脚本时,它在现有shell中运行,脚本完成后,脚本创建或修改的任何变量都将保持可用。
所以你可以试试。导出VARIABLE = value,然后运行java程序。这类似于在Windows终端中设置变量,然后打开一个新终端并期望env var在那里。它不会。
这样,你告诉bash“这个命令应该在这个特定的会话中可用(会话的过程)”。另外你要告诉它“为运行这个导出命令后将结束的bash会话设置这个env var”因此,当你运行Java程序时它将不存在。
答案 2 :(得分:0)
定义并导出环境变量之后。从同一终端启动IDE。
答案 3 :(得分:0)
尝试写
"$System.env.STOREPWD"