先了解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文件,加入上述代码



相关文章:

  • 2022-12-23
  • 2022-02-28
  • 2021-07-23
  • 2021-05-09
  • 2022-12-23
  • 2022-01-18
  • 2021-12-10
  • 2021-10-09
猜你喜欢
  • 2022-02-09
  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案