2016-03-29 24 views
1

私はubuntu 14.0.4マシンで作業しています。System.getenv( "TEST_HOME")がnullを返す

私は端末からecho $TEST_HOMEを試したとき、それは、これまでのところは良い/home/dev/code/test

を返さ

export TEST_HOME=/home/dev/code/test 

を使用して、私の.bashrcファイル内の変数TEST_HOMEを輸出しました。

私はJavaコードから試してみてください。

String value = System.getenv("TEST_HOME");

valueがnullです。

ここに何か不足していますか?

+0

その変数がJavaの環境にあるためには、その変数が設定されているシェルからJavaプロセスを開始する必要があります。あなたは? – folkol

+0

@folkolこの変数を特定のシェル/端末でエクスポートしませんでした。私は '.bashrc'にエントリを追加しました。 –

+0

あなたの端末を閉じて再オープンして、.bashrcの定義した変更を更新してください。 – vikingsteve

答えて

3

.bashrcの変数は、シェルから起動したプログラムに対してのみ有効です。システム全体の環境変数については、/etc/environmentを参照してください。

はbashシェルの環境変数を設定しますUbuntu Environment variables

+0

からjavaを削除しようとすると、現在のところパス変数のみが '/ etc/environment'にあります。 '/ etc/environment'に' TEST_HOME =/home/dev/code/test'をエクスポートする必要がありますか? –

+0

はい。他のアプリケーションはこれらの変数だけを読むことができます – Rima

+0

'/ etc/environment'に' export TEST_HOME =/home/dev/code/test'を追加しました。今度は 'echo $ TEST_HOME'は何も返されません(私は端末を再起動しました)、Javaコードから同じnull(Eclipseを再起動しました)これを行うためにマシンを再起動する必要はありますか? –

1

.bashrcを参照してください。システム全体を設定するには、/etc/environmentファイルに設定します。

eclipseを使用しているため、bashシェル内で実行されないため、設定中の変数が取得されません。端末でjavaコマンドラインを使用してプログラムを実行する場合は、それを取得する必要があります。

/etc/environmentに変数を設定すると、日食を利用できるようになります。 /etc/environmentを更新すると、マシンを再起動する必要があります。