目录

  • 临时生效变量
  • 环境变量的分类(永久生效)
  • 如何让某个命令永久生效
  • 环境变量配置文件的运行顺序
  • 参考链接


Linux 操作系统的环境变量,看似很复杂,其实不然。

我们通常用到的Windows 操作系统,分别有用户和系统这两种环境变量,同样的,Linux 也是如此,分为普通用户的环境变量/home/,和系统的环境变量/etc/ 类似这种Windows环境控制面板

centos cuda环境变量设置_服务器


在 Linux 系统中有/home/目录和/etc/目录,可以分别看做是用户环境变量和系统环境变量。

让环境变量生效有两种方法:一种是永久生效的,一种是临时的,一旦关闭了当前的终端界面,即shell面板,就会失效。

先介绍临时变量

临时生效变量

shell命令终端下,输入命令:

export PATH=/home/XXX/anaconda3/bin:$PATH

XXX指的是用户名
关闭了shell终端,conda命令就会失效,即找不到该conda命令

环境变量的分类(永久生效)

  1. 用户级别环境变量定义文件:~/.bashrc~/.profile(部分系统为:~/.bash_profile
  2. 系统级别环境变量定义文件:/etc/bashrc/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment

另外在用户环境变量中,系统会首先读取~/.bash_profile(或者~/.profile)文件,如果没有该文件则读取~/.bash_login,根据这些文件中内容再去读取~/.bashrc

波浪线 ~ 指的是当前登录的用户名,例如当前登录的用户是 Alex,那么就会指定当前/home/Alex/.bashrc

如何查看这些文件,在 Linux 操作系统 shell界面下输入如下命令:

ls -al

效果如下:(这里展示的是某个用户下的环境变量文件)

centos cuda环境变量设置_服务器_02

如何让某个命令永久生效

通过修改上面那些文件的内容,在末尾输入临时变量的配置命令:

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