Mac配置环境变量

在配置 Golangbeego 框架的环境时,需要配置 $GOPATH 的环境变量,之前对Linux/Unix 下的环境变量配置都不是很了解,经过简单了解,梳理了一下Mac下的环境变量配置方法。

全局配置

以下操作均在root权限下进行。

/etc/profile/etc/paths 这两个配置文件是系统级别全局有效的,/etc/profile 会在系统启动时首先加载,一般情况下不建议做任何修改。若要配置全局的环境变量,可以修改 /etc/paths

但是在某种情况下,/etc/paths 会在系统升级时被修改或替代。

还有一种更优雅、更安全的方式,即添加PATH到 /etc/path.d

比如,我要添加MySQL的环境变量,运行以下命令:

1
sudo vim /etc/paths.d/mysql

键入路径并保存,打开新的终端即可生效。

用户配置

先简单介绍一下 .bash_profile.bashrc 的区别:

.bash_profile 在交互式、login 方式进入 bash 时加载

.bashrc 在交互式、non-login方式进入 bash 时加载

当你打开一个终端,它不要求登录,你只会看到命令提示符,它在等你键入命令,这就是login方式。在其他版本的Unix或Linux中,这将不会运行 .bash_profile,而是一个不同的文件 .bashrc

当你远程登录你的服务器时,它要求你输入用户名和密码,这就是non-login方式。

也就是说登录时只运行 .bash_profile,每个新的交互式shell都加载 .bashrc

但是,Mac系统并不遵循这一约定。当你打开一个新的终端窗口时,它将加载 .bash_profile而非 .bashrc。如果你用的 bash shell,那么你可以尝试在 .bash_profile 追加一行 echo "Hello" 并保存,然后打开新的终端窗口,你会发现 Hello 得以输出。

如果你只在Mac系统下应用你的这些配置,那么一个 .bash_profile 就够了。

如果你想让你的配置更具扩展性,那么就把配置放在 .bashrc 文件里,然后在 .bash_profile 里写入以下代码:

1
2
3
if [ -r ~/.bashrc ]; then
source ~/.bashrc
fi

或这样的一行:

1
[ -r ~/.bashrc ] && . ~/.bashrc

目的都是一样的。

对于 zsh shell,我们只需修改 .zshrc。不过为了提高扩展性,最好不要把配置直接写在 .zshrc 里面。