qq489498494 发表于 2017-7-7 23:05:18

Mac下配置环境变量重启后不生效解决(.bash_profile vs .bashrc)(bash/zsh下不加载.bashrc问题解决)

  参考上一篇文章说明:http://www.cnblogs.com/EasonJim/p/6283094.html
  得知加载顺序如下:
  /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文件。
  所以如果要能正常加载.bashrc文件,需要在.bash_profile文件的最末尾上加入如下语句:



if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
  参考:http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
  然而,这个修改只是正对base的,如果你没有修改过,上面的方法默认重启后就能生效。
  但是,现在的mac上有些使用zsh这个作为默认的shell,所以,在启动shell时,默认不会按上面的套路去加载。
  如果想要正常加载.bashrc文件时,就要找到用户目录下的.zlogin文件加入如下代码:



if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
  即可生效。
  参考思路:
  http://stackoverflow.com/questions/4493063/best-practice-for-bash-start-up-files-on-a-mac?answertab=active#tab-top
  http://superuser.com/questions/866683/iterm-zsh-not-reading-bashrc-or-bash-profile
页: [1]
查看完整版本: Mac下配置环境变量重启后不生效解决(.bash_profile vs .bashrc)(bash/zsh下不加载.bashrc问题解决)