文章目录
-
-
-
- 一、场景介绍
- 二、场景再现
- 三、问题分析
- 四、解决方案
-
-
一、场景介绍
??在采用
??但是在一些特需开发环境中,需要使用不同的
二、场景再现
-
本机安装了
JDK 8 和JDK 13 ,在不配置环境变量的情况下,默认使用的是JDK 13 -
编辑
.bash_profile 文件1vim ~/.bash_profile -
配置指定版本
JDK 的环境变量1
2
3# SET JAVA ENVIRONMENT
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH -
更新配置文件
1source ~/.bash_profile -
在本次
shell 窗口中直接查看JDK 版本1
2
3
4? ~/ java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode) -
关闭
shell 窗口后再次打开shell 窗口再次查看JDK 版本1
2
3
4? ~/ java -version
java version "13.0.1" 2019-10-15
Java(TM) SE Runtime Environment (build 13.0.1+9)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing) -
以上的结果真的是让人
What Fuck!!!
三、问题分析
-
查看环境变量
1
2? ~/ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin -
从打印出来的环境变量可以看出,刚刚配置的
.bash_profile 完全没有生效 -
Mac 下环境变量的加载顺序1
2
3
4
5
6/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrcP.S
/etc/profile 和/etc/paths 为系统级别的,在系统启动以后就会加载,后面的是用户级别的,一般首次配置环境变量,会新建~/.bash_profile 文件,在里面进行PATH 的配置,当系统读取到了~/.bash_profile 中有效的命令以后就不会再往下读了,如果没有读到所执行的命令,则讲继续往下的配置文件中读取。 -
通过以上对系统环境变量到了解,我们配置的环境变量一定是可以被加载到,但是现实效果为什么会截然不同?
-
猛的一拍脑袋,原来是因为我在安装
Iterm 2 控制台的时候,将系统的默认脚本bash 修改为zsh 了,而zsh 加载的是~/.zshrc 文件,恰巧~/.zshrc 并没有配置什么环境变量
四、解决方案
-
方案一 采用
bash 作为命令行工具1
2
3
4
5# 切换系统 shell 默认的模式
chsh -s /bin/bash
# 此模式采用 .bash_profile 作为系统环境变量的配置文件
source ~/.bash_profile -
方案二 将
.bash_profile 系统环境变量加到zsh 中1
2
3
4
5# 在 ~/.zshrc 的最后一行加入如下内容
source ~/.bash_profile
# 重新加载 .bash_profile
source ~/.bash_profile