2012-04-13 8 views
1

Ubuntu 10.04でシェルスクリプトを使用して環境を設定したいと思って、Javaプログラムにアクセスしたい。私はこのようなシェルスクリプトを書いている: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"))); 
    } 
} 

私はシェルスクリプトなしでこのコマンドを実行すると、それはうまく動作しますが、シェルスクリプトではそうでありません。

+0

提示してください(つまり、あなたのコードを実行するために使用する 'java'コマンドを含む)。また、それがうまくいかないと言うと、症状は正確に何ですか? – NPE

+0

javaプログラムを起動する前に、envコマンドの出力を確認してください。 – Jayan

答えて

4

スクリプトをどのように入手していますか?

$./myscript.sh 

又は

$source ./myscript.sh 

第二は、現在のシェルに環境変数を設定します。 Javaプログラムは大丈夫です。

編集:コメントに基づいて

サブシェルに関連する問題です。すばやく読むのは
What is the difference between executing a bash script and sourcing a bash script?

+0

ありがとうJayan、私は2番目のコマンドで試してみましたが、それは魅力として働いています...もう一度感謝します。 –

1

正確に何をしようとしていますか? JAVA=/home/ubuntu java SystemEnvを実行すると、正常に動作します

(すなわち、それは「/ホーム/ Ubuntuの」を出力)

あなたは親プロセスに環境変数をエクスポートする場合、あなたはそれをソースする必要があります。

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

Pedashically、bashで 'source'が別の形式です。 –

+0

グローバルにするには?つまり、私もtomcatからアクセスできます。 –

+0

@AnandSoni Tomcat(または他のプログラム)が起動したら(私が間違っていると誰かが私を修正してください)、いったんこれを実行できるとは思いません。私はあなたがUbuntuにいると思います。https://help.ubuntu.com/community/EnvironmentVariables#System-wide_environment_variables – lum

関連する問題