类Unix环境变量配置
环境变量配置文件
-
/etc/profile
-
/etc/bashrc
-
/etc/paths
-
~/.bash_profile
# MacOS -
~/.bashrc
# Linux -
~/.bash_login
-
~/.profile
如果shell的类型是zsh时,还会存在/etc/zshrc
和~/.zshrc
。
其中/etc/profile
,/etc/paths
,/etc/bashrc
均为系统级变量,且/etc/profile
,/etc/paths
在任何用户登录时,均会读取该文件;/etc/bashrc
在bash shell执行时,会读取该文件。
MacOS默认用户环境变量配置文件为~/.bash_profile
,Linux默认为~/.bash_rc
。如果不存在~/.bash_profile
则可以自行创建~/.bash_profile
,且如果~/.bash_profile
存在,则后面的文件都将会被忽略。
常见的环境变量
-
$PATH
:决定了shell将到哪些目录中寻找命令和程序 -
$HOME
:当前用户主目录 -
$MAIL
:当前用户到邮件存放目录 -
$SHELL
:当前用户使用到哪种shell
其中,PATH=$PATH:<PATH 1>:<PATH 2>:...:<PATH N>
,表示系统的可执行文件路径不但包括原先设定的路径($PATH
),也包括从PATH 1
到PATH N
的所有路径。类Unix的环境变量分隔符为“:”,而Windows的环境变量分隔符为“;”。可以通过echo $PATH
查看当前的可执行文件的路径。
可以使用:
$ env
显示所有的环境变量;
使用:
$ set
显示所有本地定义的shell变量。
export
命令
export
命令将传入到参数创建为一个环境变量,而这个环境变量可以被其它调用程序或脚本看见。
示例:新建一个环境变量WELCOME
:
$ export WELCOME="hello"
$ echo $WELCOME
输出:
hello
如果直接使用export
命令在shell窗口内设置环境变量,则设置的环境变量仅在本次登陆时有效,退出shell失效。
添加系统环境变量
修改系统变量/etc/paths
添加系统环境变量,建议修改/etc/paths
的方式添加,但不建议直接修改/etc/paths
文件,而是将路径写到/etc/paths.d
目录下的一个文件中,系统会逐一读取/etc/paths.d
下的每一个文件。/etc/paths
文件内容:
/usr/local/bin
/usr/bin/
...
/etc/paths.d
目录内容:
git #文件
go #文件
...
查看/etc/paths.d/git
文件内容:
/usr/local/git/bin
因此可采用以下命令添加环境变量:
sodo -s 'echo "/usr/local/sbin/mypath" > /etc/paths.d/mypath'
注意:sudo -s
是指切换到root用户,但使用当前用户的环境,这和sudo su
不同。
但添加完成之后,命令不会立即生效,有两种方式使配置文件立即生效:
-
重启终端
-
通过
source
加载:source /etc/paths
修改系统环境变量文件/etc/profile
或者/etc/bashrc
添加环境变量的语法为:
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:...:<PATH N>
要添加环境变量,只需要在文件中加入:
export PATH="$PATH:<PATH>"
修改用户环境变量
和上述中修改/etc/profile
和/etc/bashrc
类似,直接修改~/.bash_profile
或者~/.zshrc
。添加的语法仍然是:
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:...:<PATH N>
注意:每次设置完成后,如果希望立刻生效,可以使用source <ModifiedEnviromentFile>
使之生效。