首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash shell脚本:如何设置JAVA_HOME环境变量

Bash shell脚本:如何设置JAVA_HOME环境变量
EN

Stack Overflow用户
提问于 2011-03-26 03:31:12
回答 4查看 27.5K关注 0票数 3

使用openSUSE,我下载了Oracle rpms for jdk1.6.0_24,并希望将java home环境变量设置为/usr/java/jdk1.6.024,但/etc/alternatives系统无法自动检测此已安装的JDK。Update-alternatives,或者任何找不到jdk的东西。

因此,我希望在BASH脚本中手动检测JAVA home。

如果我运行这个命令: sudo find /usr -name 'jdk1.6*‘,我会得到这样的结果:

代码语言:javascript
复制
/usr/java/jdk1.6.0_24

如何将结果通过管道传递到环境变量?我想做一些像这样的事情

代码语言:javascript
复制
#!/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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-26 04:08:45

就像这样

代码语言:javascript
复制
#!/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}

我还没有测试过这一点,但希望你能明白要点(我会说按照glenn jackman的回答使用select更简洁/友好,我不知道存在这样的问题,所以我很高兴读到了这篇Q!)

票数 4
EN

Stack Overflow用户

发布于 2011-03-26 04:13:40

代码语言:javascript
复制
oldIFS="$IFS"
IFS=$'\n'
choices=( $(find /usr/java -type d -maxdepth 1 -print) )
select choice in "${choices[@]}"; do
  [[ "$choice" ]] && break
done
IFS="$oldIFS"
export JAVA_HOME="$choice"
票数 4
EN

Stack Overflow用户

发布于 2011-03-26 03:37:47

不是坐在linux终端上,但这应该会让您开始工作:

代码语言:javascript
复制
...
jdkpath=`sudo find /usr -name 'jdk1.6*'`
export JAVA_HOME=$jdkpath
...

根据需要进行调整。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5437224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档