我使用openSUSE下载了jdk1.6.0_24的Oracle rpm,我想将Java家庭环境变量设置为/usr/java/jdk1.6.0_24,但是/ etc / alternatives系统无法自动检测到此已安装的JDK。 Update-alternatives,或者只是找不到jdk的东西。

因此,我想在BASH脚本中手动检测JAVA主页。

如果运行以下命令:sudo find / usr -name'jdk1.6 *',则会得到以下结果:

/usr/java/jdk1.6.0_24

如何将结果传递到环境变量中?我想做类似的事情
#!/bin/bash
read in JAVA_HOME var from a file
if file doesnt exist
  sudo find /usr -name 'jdk1.6*'
  prompt user for which jdk is correct
  set that choice to a variable
  add the JDK to alternatives if it is missing
  save variable to a file and dont prompt next time
  set the alternatives java choice
fi
echo $JAVA_HOME

最佳答案

就像是

#!/bin/bash
function validate_java_home {
    if [ -z ${JAVA_HOME} ]
    then
        # do something if the file doesn't provide ${JAVA_HOME}
    else
        if [ ! -e ${JAVA_HOME} ]
        then
            # do something if the file provides a non existent ${JAVA_HOME}
        fi
    fi
}

if [ ! -e ${YOUR_FILE_NAME_CONTAINING_JAVA_HOME} ]
then
     JAVA_HOME_CANDIDATES=$(find /usr -name 'jdk1.6*')
     echo "Found the following candidates for JAVA_HOME, reply with the one you want then press return"
     echo ""
     echo $JAVA_HOME_CANDIDATES
     read USER_SUBMITTED_JAVA_HOME
     echo "You chose $USER_SUBMITTED_JAVA_HOME"
     JAVA_HOME=${USER_SUBMITTED_JAVA_HOME}
else
    . ${YOUR_FILE_NAME_CONTAINING_JAVA_HOME}
fi
validate_java_home
export ${JAVA_HOME}

我还没有测试过,但是希望您能理解(我想说,使用格伦·杰克曼的回答更简洁/友好,不知道它是否存在,所以我很高兴阅读此问!)

10-08 08:52
查看更多