美文网首页
Mac 系统上的环境变量不生效

Mac 系统上的环境变量不生效

作者: AnyunBo | 来源:发表于2021-05-27 14:20 被阅读0次

    一、Mac系统的环境变量

    • 加载顺序为:
      a. /etc/profile (建议不修改这个文件 ) 全局(公有)配置,不管是哪个用户登录时都会读取该文件
      b. /etc/paths (一般在这个文件中添加系统级环境变量) 全局(公有)配置,bash shell执行时不管是何种方式都会读取此文件
      c. ~/.bash_profile (一般在这个文件中添加用户级环境变量) 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时该文件仅仅执行一次!
      d. ~/.bash_login
      e. ~/.profile
      f. ~/.bashrc

    其中a和b是系统级别的系统启动就会加载;其余是用户接别的。c,d,e按照从前往后的顺序读取,如果c文件存在,则后面的几个文件就会被忽略不读了,以此类推。 ~/.bashrc没有上述规则,它是bash shell打开的时候载入的。
    全局设置,一般不建议修改/etc/profile/etc/bashrc 文件,而去修改/etc/paths文件。如果想要对所有用户都生效则可在/etc/paths文件的最后一行加上自己的app路径。优先级也是最高的。
    单个用户生效的配置,一般都是修改~/.bash_profile文件,若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!

    • 环境变量PATH的语法
      如果没特殊说明,设置PATH的语法都为:
    export PATH=<PATH 1>:<PATH 2>:<PATH 3>:.....:<PATH N>:$PATH
    
    • 推荐设置用户个人自己的环境变量,尽量不破坏Mac系统全局变量
    • 查看环境变量PATH
    echo $PATH
    

    操作系统判断

    • 确定使用的Mac OS X是什么样的Shell
      输入命令
    echo $SHELL
    

    如果输出的是:csh或者是tcsh,那么你用的就是C Shell
    如果输出的是:bashshzsh,那么你的用的可能就是Bourne Shell的一个变种。
    Mac OS X 10.2之前默认的是C Shell
    Mac OS X 10.3之后默认的是Bourne Shell

    • 如果是Bourne Shell
      那么你可以把你要添加的环境变量添加到你主目录下面的.profile或者.bash_profile,如果存在没有关系添加进去即可,如果没有生成一个

    需要注意的是,如果你在Mac上使用的是zsh等shell工具,需要再做如下配置,来达到环境变量设置的永久生效。

    第一种方法

    • 打开zsh配置文件
    vim ~/.zshrc
    
    • 添加以下内容
    if [ -f ~/.bash_profile ]; then
       source ~/.bash_profile
    fi
    
    • 使zsh配置文件生效
    source ~/.zshrc
    

    第二种方法

    • ~/.zshrc文件最后增加一行
    source ~/.bash_profile
    

    原因解释如下:

    bash的配置文件是.bashrc, zsh的配置文件是.zshrc,当你使用zsh作为默认shell工具的时候,它启动时并不会加载bash的这两个配置文件.bashrc.bash_profile,而只会加载自己的配置文件.zshrc,为了让我们的配置文件生效,只能在.zshrc中添加上面的配置。
    如果不做上述设置,你就会发现,只有当你每次source ~/.bash_profile后才会生效,下次重新打开zsh窗口,还是不生效。

    相关文章

      网友评论

          本文标题:Mac 系统上的环境变量不生效

          本文链接:https://www.haomeiwen.com/subject/ijoksltx.html