【问题标题】:Set environment variable in shell script/access in Java program在 shell 脚本中设置环境变量/在 Java 程序中访问
【发布时间】:2012-04-25 18:42:16
【问题描述】:

我想在 Ubuntu 10.04 中使用 shell 脚本设置环境,并想在 java 程序中访问。我写了这样的shell脚本:

#! /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 脚本中却不行。

【问题讨论】:

  • 请完整显示 shell 脚本(即包括用于运行代码的 java 命令)。另外,当你说它不起作用时,具体是什么症状?
  • 在启动 java 程序之前,请检查 env 命令的输出。

标签: java linux shell ubuntu-10.04


【解决方案1】:

你是如何采购脚本的?

$./myscript.sh 

或

$source ./myscript.sh 

第二个将环境变量设置为当前shell。 java程序看起来没问题。

编辑:根据评论

这是一个与 subshel​​l 相关的问题。快速阅读是
What is the difference between executing a bash script and sourcing a bash script?

【讨论】:

  • 感谢 Jayan,我已经尝试使用第二个命令,它的作用就像魅力......再次感谢......
【解决方案2】:

你到底想做什么?

运行JAVA=/home/ubuntu java SystemEnv 工作正常(即它输出“/home/ubuntu”)

如果要将环境变量导出到父进程,则必须对其进行源:

source ./myscript.sh
. ./myscript.sh # Alternative form

【讨论】:

  • 学究式地,在 bash 中,source 是另一种形式。
  • 如何使其全球化?即我也可以从tomcat访问。
  • @AnandSoni 我认为一旦 Tomcat(或任何其他程序)启动就无法完成(如果我错了,请有人纠正我)。我想你在 Ubuntu 上,看看help.ubuntu.com/community/…
  • @lum。感谢重播,但已在顶部的 /etc/init.d/tomcat6 中编写导出语句,并通过 /etc/init.d/tomcat6 restart 重新启动了 tomcat 服务器。所以,现在是那个环境。变量将被网络应用程序访问。
猜你喜欢
  • 2018-04-27
  • 2012-04-26
  • 2011-04-26
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多