$ JAVA_HOMEをUbuntuで簡単に変更できるようにする[終了]


139

Ubuntuで、JAVA_HOME環境変数をJava 5と6の間で切り替えたいのですが。

端末を開き、次のように入力して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環境を変更(およびその環境変数の変更を加えることができ、このように回避する方法がありスティックをすべての新しいターミナルウィンドウでは)?


29
正しいサイトと重複する答えは何ですか?
Martin Konicek 2012

この~/.profileファイルは、Ubuntuにログインしたときにのみ読み取られるため、ログアウト/ログインすると、JAVA_HOMEがすべての端末と実行するその他のアプリケーションに設定されます。JAVA_HOMEを設定~/.bashrcすると、ターミナルから実行されるアプリケーションでのみ表示されます。
jr0cket 2015年

回答:


196

環境変数をグローバル/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ファイルに設定します。


9
これらの変更をUbuntuのUIを介して起動したアプリに適用するには、再起動が必要です(つまり、アプリをダブルクリックします)
Eric Hu

7
これは、すべてのfriggin 'シェルで変数を設定することとどう違うのですか?
mlissner 2013

1
毎回これを手動で実行する必要がないもう1つの方法は、.bashrcファイルを変更して、コマンド "source / etc / environment"を含めることです
nityan

1
@MartinKonicekあなたの例は間違っています。その行には「エクスポート」があってはなりません。/ etc / environmentにはキーと値のペアが含まれています
pdeva

1
これ/etc/environmentは特別であり、変数の置換を許可しない、たとえば機能しないことに注意してくださいJRE_HOME=${JAVA_HOME}/jre
Abdull 2015年

31

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

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

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

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

非推奨:

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


あなたが提供したリンクから:「以下は推奨されませんが、このページで提供されている以前のソリューション(?)は10.04デスクトップリリースでは機能しませんでした。ディストリビューションでは.pam_environmentは当然処理されません。」
Calmarius

14
〜/ .pam_environmentは、変数を処理すると仮定した場合にログインをブロックするための素晴らしい方法です。PATHを$ {PATH}:$ {HOME} / binに設定してみましたが、変数の評価に失敗しました。。最終結果は:「/ binに/ RM〜/ .pam_environment」Ctrl + Alt + 1を訪問し、実行することにより、固定:(にログインし、非常に注意してくださいまたは、ここでテスト設定にセカンダリアカウントを使用することはできません
アラン・オデア

6
個人的に私はなぜ彼らが環境ファイルを作成するのを面倒にしてから、以前に機能した環境変数を設定するための他のメカニズムとはまったく異なる方法でそれを機能させたのか分かりません。環境ファイルが使用するような単純なキーと値のペアはプレーンなBSです。環境で変数とリンクを使用する理由はありますが、それでも今日でもメリットがあります。管理が簡単になります。このファイルでPAMの方法を実行する方法が最も優れていると判断したのがbozosである人は誰でも、最高の人です。変数は解釈する必要があります。
ビルロスマス

1
@ AlainO'Dea:私はまったく同じ問題を抱えていました。過去のログイン画面が表示されず、ショックで心配でした。少し調べたところ、変数は使用できるが、別の構文を使用する必要があることがわかりました。例えば。PATH DEFAULT = $ {PATH}:$ {HOME} / bin変数を使用しない場合、単純な割り当てが機能するようです。
tim_wonil

はい、@ AlainO'Deaに同意します。スクリプトにエラーがあると、ログインできません。気を付けて。
Evan Hu

13

次の手順を試してください。

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

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

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

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

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


9

変数の定義を ~/.bashrcファイルます。

bashのmanページから:

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


5

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

問題の.profileと.bashrcの違いを確認してください: .bashrc、.bash_profile、.environmentの違いは何ですか?

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




1

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

root@masternode# . ~/.profile

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


~/.profileではなく使用する必要があります./.profile
Alexis Wilke
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.