如何设置 UNIX/Linux/macOS 环境变量
UNIX/Linux/macOS 环境变量
UNIX,Linux,以及从 UNIX 衍生的 macOS 在设置环境变量方面的操作是类似的,需要使用export
命令,或将该命令写入相关文件。
使用 export 命令设置 UNIX/Linux 环境变量
在 UNIX 和 Linux 中,export
命令可用来设置环境变量,其格式如下。
export <name>=<value>
- name 参数
name
参数为环境变量的名称。- value 参数
value
参数为环境变量的值,该参数可通过$
返回其他环境变量的值,比如,$NAME
和${NAME}
均返回环境变量NAME
的值。另外,你还可以使用\
进行转义,比如,\$
将转义为$
而不是返回某个环境变量的值。
UNIX/Linux 中的环境变量名称区分大小写
在书写变量名称时,请注意拼写问题,大小写会被 UNIX/Linux 区别对待,比如,Name
和name
将被判断为不同的变量。
下面的命令设置名称为LS
的环境变量,其值将为learnscript.net
。
export LS=learnscript.net
下面的命令设置名称为LSPATH
的环境变量,其值将为环境变量LS
的值与一段网址的组合,即learnscript.net/welcome/play/
。
export LSPATH=${LS}/welcome/play/
直接在 Shell 中使用 export 命令设置的环境变量无法一直持续
如果直接在 Shell 中运行export
命令来设置变量,那么这些变更无法一直持续,比如,在重启操作系统后。你需要将设置变量的export
命令写入特定的文件,以获取永久化效果。
使用文件 /etc/profile 设置 UNIX/Linux 环境变量
将export
命令添加至文件/etc/profile
,可以设置对所有用户有效的环境变量,只需要通过vi
命令启动编辑器并打开文件/etc/profile
,然后追加格式为export <name>=<value>
的命令即可。
sudo vi /etc/profile
使用 UNIX/Linux sudo 命令提升权限
你可以使用sudo
命令来执行vi
,以避免没有足够的权限写入或读取/etc/profile
。
如果习惯了 Windows 中的一些文本编辑器,那么vi
打开的编辑器可能会让你无所适从,他的操作方式有点“特别”,“怎么会这个样子的?”。
当然,相对于编辑/etc/profile
,一些系统推荐通过新建路径为/etc/profile.d/<filename>.sh
的文件,来实现相同的效果,其中filename
应替换为具体的文件名。
无论是/etc/profile
还是/etc/profile.d/<filename>.sh
,你只需要选择其中之一,即可为所有用户设置环境变量。
sudo vi /etc/profile.d/<filename>.sh
指定执行 UNIX/Linux sh 文件的 Shell 程序
在sh
文件的开始一行,你可以使用#!
来指定执行sh
文件的 Shell 程序。比如,#!/bin/bash
指定使用bash
来执行该文件。
UNIX/Linux 中默认的 Shell 程序
大多数的 UNIX/Linux 系统默认bash
为 Shell 程序,但他并不是唯一的,你可以选择sh
,dash
等作为默认。
使用文件 ~/.profile 设置 UNIX/Linux 环境变量
将export
命令添加至文件~/.profile
,可以为当前用户设置环境变量,只需要通过vi
启动编辑器,然后追加格式为export <name>=<value>
的命令即可。
vi ~/.profile
到底应该编辑哪个文件来为当前用户设置 UNIX/Linux 环境变量?
事实上,对于应该编辑哪个文件,并没有准确的答案,因为不同的 Shell 程序会有自己的逻辑。如果修改~/.profile
没效果,你可以尝试编辑~/.bash_profile
,~/.bashrc
,或具体 Shell 程序所指明的文件。
使用 UNIX/Linux su 命令切换用户时文件 ~/.profile 可能不被执行
如果你尝试使用su
命令切换到某个用户,那么该用户对应的~/.profile
文件可能不会执行。
使用 source 命令执行文件
在采用上述方法为文件添加export
命令后,环境变量可能不会发生变化,因为被修改的文件没有被执行。你可以使用source
命令立即执行这些文件,以观察环境变量发生的变化。
source <filename>
- filename 参数
filename
参数为需要执行的文件。
下面的命令将执行文件/etc/profile
。
source /etc/profile
设置 macOS 环境变量
macOS 提供了更好的编辑器,你可以在启动台搜索并启动终端,然后使用nano
或vim
命令打开相关文件,并添加修改一些export
命令。
nano ~/.zshrc
vim ~/.zshrc
macOS Catalina 中的默认 Shell 程序为 zsh
在 macOS Catalina 以及之后的版本中,默认的 Shell 程序从bash
更改为了zsh
,因此,你可以编辑文件~/.zshrc
而不是~/.bash_profile
或~/.bashrc
。