私のLinuxシステムにJava 1.6がインストールされており、すべてのユーザーとプログラムがそれを使用しています。これで、バージョン1.7を使用するプログラムをインストールする必要があります。他の人が新しいプログラムを除いて1.6を引き続き使用できるように、このバージョンをインストールしたいと思います。私の考えは、新しいJavaをインストールし、$ JAVA_HOMEが古いJava 1.6を指すように維持することです。別のユーザーが実行する特定のプロセスでは、$ JAVA_HOMEがJava 1.7を指すように設定したいと思います。
これはうまくいくでしょうか?元の$ JAVA_HOMEを上書きしませんか? $ JAVA_HOMEがすべてがうまくいくのに十分な新しいJavaを指していますか?
注:プログラムがJava 1.7で実行されたくありません。プログラムは1.7で実行する必要があるスクリプトを呼び出します。プログラムやスクリプトを変更する権限がありません。
ベストアンサー1
$JAVA_HOMEについてだけ心配する必要はありません。コマンドを呼び出すには$ PATHも設定する必要があります。いいえ絶対パス。はいjava
、いいえ/opt/java/1.7/bin/java
。
これで、スクリプトの仕組みやJavaの呼び出し方法に応じていくつかのオプションがあります。
バッシュスクリプト
これにより、追加のユーザーを追加する必要がなくなります。
#!/bin/bash
JAVA_HOME=/opt/java/1.7
PATH=/opt/java/1.7/bin:$PATH
...
~/.bashrc
他のユーザーを使用したい場合は、.bashrcに入れることができます。エクスポートを使用して$ JAVA_HOMEと$ PATHを環境変数に設定します。
...
export JAVA_HOME=/opt/java/1.7
export PATH=/opt/java/1.7/bin:$PATH
...
評価する
個々のコマンドとそのサブコマンドに対してこれらの環境変数を動的に設定することもできます。
eval JAVA_HOME=/opt/java/1.7 PATH=/opt/java/1.7/bin:$PATH java ${ARGS}