目录
- 临时生效变量
- 环境变量的分类(永久生效)
- 如何让某个命令永久生效
- 环境变量配置文件的运行顺序
- 参考链接
Linux 操作系统的环境变量,看似很复杂,其实不然。
我们通常用到的Windows 操作系统,分别有用户和系统这两种环境变量,同样的,Linux 也是如此,分为普通用户的环境变量/home/
,和系统的环境变量/etc/
类似这种Windows环境控制面板
在 Linux 系统中有/home/
目录和/etc/
目录,可以分别看做是用户环境变量和系统环境变量。
让环境变量生效有两种方法:一种是永久生效
的,一种是临时的
,一旦关闭了当前的终端界面,即shell面板,就会失效。
先介绍临时变量
临时生效变量
在shell命令终端下,输入命令:
export PATH=/home/XXX/anaconda3/bin:$PATH
XXX指的是用户名
关闭了shell终端,conda
命令就会失效,即找不到该conda
命令
环境变量的分类(永久生效)
- 用户级别环境变量定义文件:
~/.bashrc
、~/.profile
(部分系统为:~/.bash_profile
) - 系统级别环境变量定义文件:
/etc/bashrc
、/etc/profile
(部分系统为:/etc/bash_profile
)、/etc/environment
另外在用户环境变量中,系统会首先读取~/.bash_profile
(或者~/.profile
)文件,如果没有该文件则读取~/.bash_login
,根据这些文件中内容再去读取~/.bashrc
波浪线 ~
指的是当前登录的用户名,例如当前登录的用户是 Alex,那么就会指定当前/home/Alex/.bashrc
如何查看这些文件,在 Linux 操作系统 shell界面下输入如下命令:
ls -al
效果如下:(这里展示的是某个用户下的环境变量文件)
如何让某个命令永久生效
通过修改上面那些文件的内容,在末尾输入临时变量的配置命令:
export PATH=/home/XXX/anaconda3/bin:$PATH
#或者把PATH放在前面
export PATH=$PATH:/home/XXX/anaconda3/bin
如下所示:修改普通用户的用户环境变量配置文件 ~/.bashrc
vim ~/.bashrc
# 在最后一行加上
export PATH=$PATH:/home/XXX/anaconda3/bin
然后需要在shell终端输入命令: source
当前的文件名,就可以永久生效,其原理是Linux 操作系统每次都会去查找这些环境变量配置文件,所以每次都是相当于一次运行一次临时的变量配置命令。
当然如果是在用户下配置了用户变量的,那么就只会是在该用户登录时生效,除非是配置了 /etc/目录下的,系统环境配置文件,如/etc/bashrc
、/etc/profile
或 /etc/bash_profile
、/etc/environment
,那么可以让所有用户都可以使用到配置好的生效的命令了,相当于全局配置。
这其中需要注意的一点是如果不存在,相应的环境配置文件,那么就需要自己创建,如果自己登陆的账号是普通用户,那么就应该到/home/目录下自己的用户目录下,创建自己普通用户的环境配置文件。
特别注意是 source
命令,让环境配置文件生效,否则配置好了也不会有用的。
如下所示:
source ~/.bashrc
环境变量配置文件的运行顺序
顺序是从上到下,波浪线指的是当前登录的用户名下的环境配置文件,不过如果是 root 用户,那么也就不会~/.profile
等文件了,因为 root 用户 用的是/etc/
系统的环境配置文件。
/etc/environment
/etc/profile
/etc/bashrc 或者 /etc/bash.bashrc
~/.profile 或者 ~/.bash_profile
~/.bashrc
(系统环境变量)/etc/environment
—> /etc/profile
—> /etc/bashrc
—>
~/.profile
—> ~/.bashrc
(用户自定义环境变量 )
打开
/etc/profile
文件你会发现,该文件的代码中会加载/etc/bash.bashrc
文件,然后检查/etc/profile.d/
目录下的.sh文件并加载。其次再打开
~/.profile
文件,会发现该文件中加载了~/.bashrc
文件。从
~/.profile
文件中代码不难发现,/.profile
文件只在用户登录的时候读取一次,而/.bashrc
会在每次运行Shell脚本的时候读取一次。
参考的测试方法:
在每个文件中的第一行都加上下面这句代码,并相应的把冒号后的内容修改为当前环境配置文件的绝对文件名。
export UU_ORDER="$UU_ORDER:~/.bash_profile"
修改完之后保存,新开一个shell窗口,然后echo $UU_ORDER
观察变量的值:
uusama@ubuntu:~$ echo $UU_ORDER
$UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc