Unix加载环境变量来自3种配置文件.
- 首先加载 /etc/profile 系统全局变量.
- 接着是其他系统配置文件 如 /etc/bashrc
- 最后是用户自定义配置文件 ~/.bash_profile
前2个是系统级的,针对所有用户,非root用户只有可读权限,修改时需要 sudo 获取root权限.
而最后一个是针对当前用户的配置文件,建议修改此文件,如果当前用户目录下没有此文件 ,nano ~/.bash_profile 创建一个.
如何给系统设置全局变量?
加入你安装了mongoDB ,想在mac中添加mongod (服务端) mongo (客户端) 的全局环境变量.
(1)首先找到你的mongoDB安装目录的bin 目录,我的安装目录在这里
1 2 |
/usr/local/Cellar/mongodb/2.4.9/bin |
(2)编辑 .bash_profile 文件
1 2 |
zhangzhi@moke:~$ nano ~/.bash_profile |

我的配置文件里之前已经定义了全局环境变量 PATH
上图的红框处是冒号 : 为啥要圈起来,是想告诉大家这里多个环境变量设置需要用 冒号 : 分隔开,那我现在把 mongodb 的bin目录添加到PATH中.

我把mongodb的bin目录添加到了git bin目录之后,中间用 冒号 : 分隔
结尾处的${PATH} 是系统的环境变量,~/.bash_profile 文件配置错了,可能导致好多的系统shell 都不能使用,比如常用的 ls 都不支持. 你想编辑 ~/.bash_profile 文件也是不可能的事,如果真的这样,该怎么办?
在命令行中执行下面的shell ,保证系统shell 命令可用,然后去编辑 ~/.bash_profile 文件
1 2 |
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin |
那么系统的$PATH 里到底包含哪些环境变量呢?

${PATH} 的内容也可以直接查看此文件 /etc/paths
${PATH} 变量就是包括这些环境变量,没有了这个, /usr/bin ..... /usr/local/bin 下的软件二进制启动文件都失去了全局环境变量,比如 终端下可能会不能直接使用 node ,python 等等
保存 ~/.bash_profile 文件后并不是及时生效,重启电脑是一种办法,但是还有更省事的,运行source 命令
1 |
zhangzhi@moke:/usr$ source ~/.bash_profile |
这样你设置的个人配置文件就生效了,去终端直接用 mongod 启动mongodb服务器,用mongo 启动mongodb客户端即可.
另外:
OS X系统的环境变量,加载顺序为:
1 2 3 4 5 6 7 |
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc |
/etc/profile和/etc/paths是系统级别的,系统启动就会加载, 后面几个是当前用户级的环境变量。 ~/.bash_profile,~/.bash_login,~/.profile按照从前往后的顺序读取, 如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了, 如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。 ~/.bashrc没有上述规则,它是bash shell打开的时候载入的。 设置PATH的语法为:
export PATH="$PATH:
1 2 3 4 5 6 7 8 9 10 |
注: (1)一般环境变量更改后,重启后才可生效。如果想立刻生效,则可执行下面的语句: $ source 相应的文件 (2)如果默认shell是bash,那么shell启动时会触发.bashrc,如果默认shell是zsh,那么shell启动时会触发.zshrc (3)环境变量既可以加到$PATH头部,也可以加到$PATH尾部。 例如mac中自带emacs的位置在/usr/local/emacs $ type emacs emacs is /usr/local/emacs 如果在.zshrc中添加export PATH="$PATH:/Applications/Emacs.app/Contents/MacOS" 且 source .zshrc之后,type emacs还是emacs is /usr/local/emacs 解决方案是,把路径加在$PATH头部, export PATH="/Applications/Emacs.app/Contents/MacOS:$PATH" 或者增加alias, alias emacs="/Applications/Emacs.app/Contents/MacOS/Emacs" |
