Closed xq-cao closed 8 years ago
这个也不错哈:
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
如果我们可以不用设置PATH的话,那么这个代码可以减少到只有三行。
function setjdk() {
export JAVA_HOME=`/usr/libexec/java_home -v $@`
}
我喜欢这个三行的脚本 😄
为什么没设置path也可以运行
@macdao 确实,没想到/usr/bin/java
指向的文件是会自动替换的
@fadying 原因我有写,是我没说清楚嘛?在这里:https://github.com/macdao/ocds-guide-to-setting-up-mac#java 我是这么写的
那问题来了,当你运行java
或者 Java 程序时使用的是哪个 JDK 呢?在 OS X 下,java
也就是/usr/bin/java
在默认情况下指向的是已经安装的最新版本。但是你可以设置环境变量JAVA_HOME
来更改其指向:
这个问题已经在上面的PR中修改了。所以关闭这个PR。
我在网上搜了下,找到了两种设置环境变量的方法。
我们可以把这段脚本保存在一个shell文件中,然后放在/bin/目录下,这样就可以执行去设置了。例如:保存为一个叫setjdk的shell文件,然后就可以:
source setjdk 1.7
去设置了。 或者我们可以把这段代码放在一个shell函数中放到 zsh or bash的配置文件中,这样就不用加"source"了。 用这种方式,我们可以设置JAVA_HOME 和PATH。据说只设置JAVA_HOME就够用了。所以也有了比较简单的第二种方案。 2、使用Alias去设置,例如:
我现在使用的是第一种,是将它保存在一个脚本中。然后每次需要用到时执行一下:
. setjdk xx
这两种方法不好的地方,都是每次都要手动执行个命令去切换了。不知道有没有什么更好的方式了。