在shell脚本中设置环境变量/在Java程序中访问
我想在Ubuntu 10.04中使用shell脚本设置环境,并且想要在java程序中访问。我曾经写过shell脚本是这样的:在shell脚本中设置环境变量/在Java程序中访问
#! /bin/sh
export JAVA=/home/ubuntu
echo "Variable $JAVA"
和我的java程序是:
import java.util.Map;
public class SystemEnv
{
public static void main(String[] args)
{
Map<String, String> variables = System.getenv();
for (Map.Entry<String, String> entry : variables.entrySet())
{
String name = entry.getKey();
String value = entry.getValue();
System.out.println(name + "=" + value);
}
System.out.println(System.getenv(("JAVA")));
}
}
当我没有执行shell脚本命令它工作得很好,但在shell脚本没有。
你是如何采购脚本的?
$./myscript.sh
或
$source ./myscript.sh
第二将设置环境变量当前壳。 Java程序看起来没问题。
编辑:基于评论
这是一个有关subhell的问题。快速阅读是
What is the difference between executing a bash script and sourcing a bash script?
谢谢Jayan,我尝试过使用第二个命令,它的功能如同魅力......再次感谢.. – 2012-04-13 11:57:33
你想要做什么?
运行JAVA=/home/ubuntu java SystemEnv
工作正常(即输出“/家/ Ubuntu的”)
如果要环境变量导出到父进程,你必须采购它:
source ./myscript.sh
. ./myscript.sh # Alternative form
在bash中,“源”是另一种形式。 – 2012-04-13 13:26:18
如何让它成为全球?即我也可以从tomcat访问。 – 2012-04-14 09:21:56
@AnandSoni一旦Tomcat(或任何其他程序)已经启动,我不认为它可以完成(有人请纠正我,如果我错了)。我认为你在Ubuntu上,看看https://help.ubuntu.com/community/EnvironmentVariables#System-wide_environment_variables – lum 2012-04-16 07:47:16
请出示shell脚本(即包含用于运行代码的'java'命令)。另外,当你说它不起作用时,症状到底是什么? – NPE 2012-04-13 11:49:04
请在启动java程序之前检查env命令的输出。 – Jayan 2012-04-13 11:49:53