web-dev-qa-db-ja.com

Ubuntuで$ Java_HOMEを簡単に変更可能にする

Ubuntuでは、Java 5と6の間でJava_HOME環境変数を切り替えたいと思います。

ターミナルを開き、次を入力してJava_HOME環境変数を設定します。

export Java_HOME=/usr/lib/jvm/Java-1.5.0-Sun

そして、同じターミナルウィンドウで、次のように入力して、環境変数が更新されたことを確認します。

echo $Java_HOME

そして、私は/ usr/lib/jvm/Java-1.5.0-Sunを見ています。これは私が期待しているものです。さらに、〜/ .profileを変更し、Java_HOME環境変数を/usr/lib/jvm/Java-1.5.0-Sunに設定します。

そして今、問題のために-新しいターミナルウィンドウを開いてecho $ Java_HOMEと入力してJava_HOME環境変数を確認すると、Java_HOME環境変数がJava 6に戻されていることがわかります。 Java_HOME環境変数がJava 5に設定されている(おそらく〜/ .profileで行った変更のため)マシンを再起動します(またはログアウトしてから再度ログインします)。

これを回避する方法はありますか?ログアウトしてから再度ログインすることなくJava_HOME環境を変更できます(そして、環境変数をすべて変更しますstick新しい端末ウィンドウ)?

138
Junho Park

環境変数をグローバル/etc/environmentファイルに配置します。

...
export Java_HOME=/usr/lib/jvm/Java-1.5.0-Sun
...

変数を更新するすべてのシェルで「source/etc/environment」を実行します。

$ source /etc/environment

動作することを確認します。

$ echo $Java_HOME
$ /usr/lib/jvm/Java-1.5.0-Sun

素晴らしい、ログアウトは必要ありません。

端末のみでJava_HOME環境変数を設定する場合は、〜/ .bashrcファイルで設定します。

196
Martin Konicek

これはおそらくあなたの問題を解決します: https://help.ubuntu.com/community/EnvironmentVariables

セッション全体の環境変数

特定のユーザーの環境に影響を与える方法で環境変数を設定するには、ユーザーのホームディレクトリにある特定のシェルスクリプトファイルに値を設定するコマンドを配置しないでください。

〜/ .pam_environment-このファイルは、特にユーザーの環境を設定するためのものです。スクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。

非推奨:

〜/ .profile-起動プロセスのデスクトップセッション中にDisplayManagerによって自動的に実行されるため、また、テキストコンソールからログインするときにログインシェルによって自動的に実行されるため、これはおそらく環境変数の割り当てを配置するのに最適なファイルです。

31
Holger Frohloff

これらの手順を試してください。

-「etc\profile」を編集します。環境変数は、ファイルの下部に入力されます。 Ubuntuはルートフォルダーへのアクセスを許可しないため、ターミナルでいくつかのコマンドを使用する必要があります。

ステップ1:ターミナルを起動します。コマンドを入力:gksudo gedit /etc/profile

Step2:プロファイルテキストファイルが開きます。ページの下部に環境変数を入力します........... Eg:export Java_HOME=/home/alex/jdk1.6.0_22/bin/Java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH

ステップ3:ファイルを保存して閉じます。 echoコマンドを使用して、環境変数が設定されているかどうかを確認します........ Egecho $PATH

13
Alex

~/.bashrcファイルに変数定義を配置する必要があります。

Bashのmanページから:

ログインシェルではないインタラクティブシェルが開始されると、bashは/etc/bash.bashrcおよび〜/ .bashrcからコマンドを読み取り、実行します(これらのファイルが存在する場合)。

9
Paweł Nadolski

従来、ターミナルウィンドウで変数を変更するだけの場合は、.bashrcファイルに設定します。このファイルは、新しいターミナルが開かれるたびに取得されます。 .profileファイルは、新しいターミナルを開くたびにソースされません。

問題の.profileと.bashrcの違いを参照してください。 。bashrc、.bash_profile、および.environmentの違いは何ですか?

.bashrcは問題を解決するはずです。ただし、Ubuntuを使用しているため、適切なソリューションではありません。関連するUbuntuヘルプページ「 セッション全体の環境変数 」を参照してください。したがって、.profileが機能しないのも不思議ではありません。 Ubuntu 12.04とxfceを使用します。 .profileを設定しましたが、ログアウトしてログインしても効果がありません。同様の経験 here 。したがって、.pam_environmentファイルを使用して、.profileおよび.bashrcを完全に忘れなければならない場合があります。また、.pam_environmentはスクリプトファイルではないことに注意してください。

5
HongboZhu

.profileに変更を加えた後、変更を有効にするためにファイルを実行する必要があります。

root@masternode# . ~/.profile

これが完了すると、echoコマンドが機能します。

1
user2094397

これは長くて冷たい質問ですが、新しいまたは最近の主要なJavaリリースがあるたびに出てきます。これは、6と7のスワップに簡単に適用されます。

過去にupdate-Java-alternativesでこれを実行しました: http://manpages.ubuntu.com/manpages/hardy/man8/update-Java-alternatives.8.html

1
Alain O'Dea

bash(1) を見てください。~/.profile、つまり-lオプションを取得するには、login Shellが必要です。

1