• Mac下配置环境变量配置不生效.bashrc文件每次打开终端都需要source的问题


    先了解Mac环境变量加载顺序

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

    其中/etc/profile/etc/paths是系统级别的,系统启动就会加载,
    后几个是当前用户级的环境变量。后面3个按照从前往后的顺序读取,如果/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果/.bash_profile文件不存在,才会以此类推读取后面的文件。
    ~/.bashrc没有上述规则,它是bash shell打开的时候载入的。
    也就是说在当前用户的目录下,如果有了.bash_profile文件就不会去加载.bashrc文件。

    login shellvsno login shell

    1. login shell
      需要输入用户名和密码,进入的 shell就是loginshell。
      注意:在shell里使用su - user_name 切换用户,登录的shell也是login shell
      login shell会读取的文件有:
      /etc/profile~/.bash_profile,~/.bash_login~/.profile,按以上顺序读取。
    2. no login shell。
      在登录shell时不输入输入用户名和密码,那么这个就是no login shell。
      在图形界面下,打开一个shell也是no login shell
      no login shell 在打开的时候,执行的文件是:
      ~/.bashrc,而.bashrc又会执行/etc/bashrc文件。

    解决方案:要加载.bashrc文件,需要在.bash_profile文件中直接加载该文件。

    在.bash_profile文件中加入以下代码:

    if [ -f ~/.bashrc ]; then
       source ~/.bashrc
    fi
    

    改完需要source 命令生效
    参考

    上述修改时针对终端时bash的修改,假如终端是zsh的话,需要找到用户目录下的.zlogin文件,加入上述代码



  • 相关阅读:
    smm框架整合实现登录功能
    Java线程面试题
    JAVA面试题
    Linux基础命令
    Java面试题技术类
    Spring+Spring MVC+MyBatis框架集成
    C语言 编程练习22题
    C语言 基础练习40题
    Python3-socket网络知识储备
    python3-面向对象进阶(内置方法)
  • 原文地址:https://www.cnblogs.com/my-blogs-for-everone/p/12756282.html
Copyright © 2020-2023  润新知