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

posted @ 2017-01-13 16:22  EasonJim  阅读(20254)  评论(0编辑  收藏