私は作業にopenjdkを使用しますが、時にはoracleのJREが必要な場合があります。私はこれを達成するために "env"コマンドを使うことができると思いましたが、なぜそれがうまくいかないのかわかりません。実行すると、openjdk/usr/lib/jvm/java-1.8.0-openjdk-amd64
とoracle jdkがあります。以下を取得します。/usr/lib/jvm/jdk-8-oracle-x64
env JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64 java -version
java version "1.7.0_75" OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-3) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
しかし、試してみるとenv JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64 env|grep JAVA
次のようになります。
JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64
私はこれがプロセスの分岐と継承とある程度関連していると感じています。私は単にエクスポート名=変数コマンドなどを使用できることを知っています。ただし、「env」コマンドを使用する場合と使用方法の説明をお願いします。ありがとうございます! (私はDebian Linux、不安定なリポジトリを使用しています)
答え1
envコマンドを使用してこれを実行できますが、いくつかの回避策を使用してを呼び出す必要があります。sh
次のコードスニペットをご覧ください。
# env var=bla echo $var
>
# env var=bla sh -c 'echo $var'
> bla
# echo $var
>
以下を使用してより多くの情報を見つけることができます。info coreutils 'env invocation'
残念ながらこれがなぜsh -c ''
。
env
やや直感的ではない行動を示すようです...
# env PATH= echo $PATH
> env: echo: No such file or directory
# env PATH= /bin/echo $PATH
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin