如何在 Windows 下设置环境变量我们都不陌生,弹窗上面是用户环境变量,下面是系统环境变量。那么在 Linux 下如何设置环境变量呢?Linux 下设置环境变量相对复杂了一点,因为 Linux 下除了“系统-用户”这个维度外还有“系统-shell”这个维度。
Linux 环境变量相关的知识
系统可执行文件目录
/bin
系统可执行文件,一般会软链到/usr/bin
。/usr/bin
系统可执行文件,一般由系统预安装,或者使用yum
、dnf
、apt-get
等安装的软件,会随着系统升级而改变。/usr/local/bin
用户可执行文件,不会随系统升级而改变。
用户自己安装的或者直接解压缩的软件包,如果想要全局调用,那么需要在 /usr/bin
或者 /usr/local/bin
下创建软链,不二建议在 /usr/local/bin
下创建,这是个好习惯。
配置环境变量的相关文件
敲黑板内容:只有 login shell 启动时才会运行
/etc/profile
及/etc/profile.d
目录下的脚本,non-login shell 则不会。所以可能你在/etc/profile
中添加了环境变量但是不生效,因为此时你打开的是 non-login shell,如果想要生效,在 shell 的配置文件中添加source /etc/profile
即可。
/etc/profile
为所有用户设置环境变量和启动程序,用户可以有多个 shell 如 bash、zsh、ksh等,在此文件中添加环境变量可作用于所有终端,不过一般不直接修改此文件。/etc/profile.d
是/etc/profile
配置文件的目录,加载/etc/profile
时会扫描该目录下的.sh
文件。类似于/etc/nginx/nginx.conf
和/etc/nginx/conf.d
。~/.profile
为当前用户设置环境变量和启动程序。/etc/bashrc
为所有用户初始化 bash 的设置。~/.bashrc
为当前用户初始化 bash 的设置。export
可查看所有的环境变量。echo $PATH
可查看所有添加到环境变量中的可执行文件(系统级、用户级、shell 级),环境变量之间使用:
分隔。
此处是以 CentOS 为例,不同的系统下,文件路径和名称会略有不同,但都在 /etc
下。其它的 shell 找到自己对应的配置文件进行修改即可。
简单说明如何添加环境变量
export AAA=aaa
在当前 shell 中设置临时环境变量AAA
,重新打开 shell 后该环境变量失效。- 在
~/.bashrc
中添加export AAA=aaa
在当前用户的 bash 中设置环境变量AAA
值为aaa
。 - 在
~/.bashrc
中添加export PATH=$PATH:bbb
在当前用户当前 shell 中把可执行文件bbb(可执行文件的路径)
添加到环境变量中,多个环境变量用:
分隔。
需要注意的是,修改了
~/.bashrc
不会立即生效,需要重启 shell 或者执行source ~/.bashrc
。
如何为所有用户添加环境变量,如何为当前用户所有终端添加环境变量等情况,自己去动手试试吧。