MAC 更新 “.bash_profile” 系统全局配置文件不生效的解决方案

一、场景介绍

  在采用 Mac 系统安装 JDK 时,是不需要配置环境变量的,只要安装成功即可直接在任意的终端访问到 java 命令。

  但是在一些特需开发环境中,需要使用不同的 JDK 版本(采用 IDEA 开发的同学可以忽略这种情况,本次只是制造一个测试场景),那么,我们就必须配置不同版本的 JDK 环境了。

二、场景再现
  1. 本机安装了 JDK 8JDK 13,在不配置环境变量的情况下,默认使用的是 JDK 13

  2. 编辑 .bash_profile 文件

    vim ~/.bash_profile
    
  3. 配置指定版本 JDK 的环境变量

    # SET JAVA ENVIRONMENT
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    
  4. 更新配置文件

    source ~/.bash_profile
    
  5. 在本次 shell 窗口中直接查看 JDK 版本

     ~/ 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)
    
  6. 关闭 shell 窗口后再次打开 shell 窗口再次查看 JDK 版本

      ~/ 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)   
    
  7. 以上的结果真的是让人 What Fuck!!!

三、问题分析
  1. 查看环境变量

     ~/ echo $PATH
    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    
  2. 从打印出来的环境变量可以看出,刚刚配置的 .bash_profile 完全没有生效

  3. Mac 下环境变量的加载顺序

    /etc/profile
    /etc/paths
    ~/.bash_profile
    ~/.bash_login
    ~/.profile
    ~/.bashrc
    

    P.S
    /etc/profile/etc/paths 为系统级别的,在系统启动以后就会加载,后面的是用户级别的,一般首次配置环境变量,会新建 ~/.bash_profile 文件,在里面进行 PATH 的配置,当系统读取到了 ~/.bash_profile 中有效的命令以后就不会再往下读了,如果没有读到所执行的命令,则讲继续往下的配置文件中读取。

  4. 通过以上对系统环境变量到了解,我们配置的环境变量一定是可以被加载到,但是现实效果为什么会截然不同?

  5. 猛的一拍脑袋,原来是因为我在安装 Iterm 2 控制台的时候,将系统的默认脚本 bash 修改为 zsh 了,而 zsh 加载的是 ~/.zshrc 文件,恰巧 ~/.zshrc 并没有配置什么环境变量

四、解决方案
  • 方案一 采用 bash 作为命令行工具

    # 切换系统 shell 默认的模式
    chsh -s /bin/bash
    
    # 此模式采用 .bash_profile 作为系统环境变量的配置文件
    source ~/.bash_profile
    
  • 方案二.bash_profile 系统环境变量加到 zsh

    # 在 ~/.zshrc 的最后一行加入如下内容
    source ~/.bash_profile 
    
    # 重新加载 .bash_profile
    source ~/.bash_profile 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值