在 Mac 上设置环境变量的位置
在命令行中,环境变量是为当前 shell 定义的,并被任何正在运行的命令或进程继承。他们可以从默认 shell、PATH、用户主目录、到终端仿真类型、当前工作目录、历史文件所在的位置、语言和本地化设置,并进一步包括 shell 变量,其中包括 自定义 bash 提示符,彩色 ls 输出,并更改为终端外观,以别名等等。
让我们来看看如何列出环境变量和 shell 变量,然后介绍如何在 Mac OS X 的命令行中设置和添加新的环境变量。我们将针对 bash 和 zsh shell 介绍这一点。
在 Mac OS X 上的 bash 中显示当前环境和 Shell 变量
要快速获取环境变量列表,您可以在 bash 中使用以下命令:
打印环境
要在 zsh 中列出环境变量,请使用以下命令:env
或可选:
回显 $ENV_VAR
如果您想查看shell 变量的完整列表,也可以使用“set”命令:
设置
这些命令的输出可能很长,因此您可能希望通过 less 或 more 命令将输出通过管道传输。
在 macOS 命令行中使用 zsh 设置环境变量
zsh shell 通过位于用户主目录中的 zshenv 文件设置环境变量:
~/.zshenv
因此,您可以通过使用 nano、vim 等修改该文件或使用 echo 来添加 zsh 环境变量,如下所示:
echo 'export ENV_VAR=example' >> ~/.zshenv
例如:
echo 'JAVA_HOME=$(/usr/libexec/java_home)' >> ~/.zshenv
在 Mac OS X 命令行中使用 bash 设置环境变量
因为 Mac 默认使用 bash shell,您可以在用户目录 .bash_profile 中设置环境变量,对于活动用户帐户,该文件的路径位于:
~/.bash_profile
如果您更改了 shell 或者您不确定您使用的是什么 shell,您可以随时通过发出 echo $SHELL 命令,它将显示正在使用的 shell。我们假设您仍在使用 OS X 默认的 bash shell,因此我们将通过使用 nano 修改 .bash_profile 来添加新的环境变量——如果您愿意,您可以使用 vi、emacs 或其他文本编辑器,但我们将介绍 nano,因为它很简单。
首先在 nano 文本编辑器中打开 .bash_profile:
nano .bash_profile
您可以将环境变量和 shell 变量添加到新行,如果 .bash_profile 文件中已经有数据,只需确保在必要时使用箭头键和回车键将新变量添加到新的空白行。
举个例子,假设我们要在 .bash_profile 中设置 JAVA_HOME 和 JRE_HOME 环境变量,方法是在文件的新行中添加以下内容:
export JAVA_HOME=$(/usr/libexec/java_home)
export JRE_HOME=$(/usr/libexec/java_home)
假设我们现在已经完成,按 Control+o(这是水獭中的 o)保存对 .bash_profile 所做的更改,然后按 Control+X 退出 nano
对环境变量所做的更改和添加将需要重新启动 shell 或生成新的 shell。
在 OS X 中设置临时环境变量
值得一提的是,您还可以通过单独使用“export”命令在 bash 中设置临时环境变量,尽管这些变量只会在当前 bash shell 保持活动状态时持续存在。例如,如果你想添加一个临时路径到 ~/bin/ ,你可以使用以下命令:
export PATH=$PATH:~/bin
同样,“export”命令自行运行且不包含在 .bash_profile 中,这只是一个临时设置,环境变量不会持续存在,除非您将其添加到 .bash_profile 中。
如果您实际上正在寻找添加新的 PATH 以供使用,您几乎肯定应该通过将适当的导出命令放入文件中来将其添加到 .bash_profile。
超越 bash shell,如果您更改您的终端应用默认 shell 从 bash 到 tcsh 、zsh、sh、ksh、fish 或任何其他备用 shell,您只需要为该特定 shell(.tschrc、.cshrc、.profile 等)修改适当的配置文件或 rc 文件。