我的 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 的方式,您有几个选择。
bash脚本
这样做意味着您不需要添加额外的用户
#!/bin/bash
JAVA_HOME=/opt/java/1.7
PATH=/opt/java/1.7/bin:$PATH
...
~/.bashrc
如果您想使用其他用户,可以将其放入 .bashrc 中。使用export将$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}