質問: お世話になっております。 Eclipseを触る機会が出てきたので環境構築から再度行いました。 JDKは1.8.0_45と1.7.0_51が入っている状況です。 $ touch .bash_profileで.bash_profileを新規作成し、JAVA_HOMEのパスをセットします。 $ export JAVA_HOME=$(/usr/libexec/java_home -v 1.7) $ source ~/.bash_profile $ echo $JAVA_HOME とすると /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home とJAVA_HOMEの値を参照できました。 $ open ~/.bash_profileを見ましたが、作成したままの状態で、空でした。 $ java -version $ javac -version ともに1.7.0_51が表示される状況です。 ですが、ターミナルを閉じて再度$ java -versionをすると1.8.0_45を参照してしまいます。 どうしてこのような現象が起こるのでしょうか? ちなみに$ which javaとした場合/usr/bin/javaと表示され、/usr/bin/javaは /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java でした。 このパスの違いが何か原因があるのでしょうか? よろしくお願いいたします。
回答: ``` $ export JAVA_HOME=$(/usr/libexec/java_home -v 1.7) ``` と実行されたのはターミナル内ですが、その環境変数が有効なのは `自プロセスとその子プロセスたち` だけです。そこが Windows の `システム環境変数` とは異なります。 ですから、ターミナルを閉じて自プロセスが消滅した時点で設定した環境変数も消滅します。 それで、Unix系OSで環境変数を設定したい場合は `~/.bash_profile` もしくは `~/.bashrc` の中に export コマンドを定義しておき、ログイン時に自動設定されるようにします。