Linux 下的环境变量

118 阅读2分钟

一、前言

本文介绍 Linux 的环境变量,Linux 版本为 Centos7。

二、环境变量

2.1、定义

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如环境变量 HOME 指定了用户的家目录,环境变量 PATH 指定了 Shell 搜索用户执行命令的路径。

如图 2-1,HOME 原本的值是 /root,我将 HOME 赋值为 /root1,然后 cd ~ 切换到家目录,报没有 /root1 这个目录,说明操作系统是通过环境变量 HOME 来确定用户家目录的位置。

2-1

2.2、查看环境变量

可通过 env 命令查看所有的环境变量,可通过 echo ${PATH}echo $PATH 查看单个环境变量。如图 2-2。

2-2

2.3、临时设置环境变量

在终端中,可通过命令行的方式临时修改环境变量,修改结果存储在内存中,只对当前终端生效。

如图 2-3,我在用户家目录下新建了一个 test-path 脚本,这个文件只有一行代码 echo $HOME,然后我执行 bash test-path,报找不到文件或目录,这是因为家目录的路径不在环境变量 PATH 里面,我通过在 PATH 环境变量里面加入家目录的路径,再次执行 test-path 脚本,可正常运行。

2-3

2.4、环境变量定义文件

在 2.3 小节中,临时设置的环境变量只对当前终端生效,如果需要设置的环境变量永久生效,则需要修改环境变量定义文件。环境变量定义文件或目录有:

  • /etc/profile
  • /etc/profile.d(目录)
  • /etc/bashrc
  • ~/.bashrc
  • ~/.bash_profile

这些文件或目录可简单分为系统级、用户级,系统级对所有用户生效,用户级只对当前用户生效,家目录下的环境变量定义文件是用户级,其余为系统级。

这些文件的执行的顺序是怎样的呢?可以在这些文件的首行添加 echo 代码,不同文件打印不同的内容,对于 /etc/profile.d 目录,新建一个 test.sh 文件,用于 echo 打印。执行 su - root,打印结果如图 2-4,执行 su root,打印结果如图 2-5。su - root 代表 login shell,su root 代表 nologin shell。

2-4
2-5

通过图 2-4,我们可知文件的执行顺序如下:

  1. /etc/profile
  2. /etc/profile.d
  3. ~/.bash_profile
  4. ~/.bashrc
  5. /etc/bashrc

通过查看 /etc/profile 中的代码可知,/etc/profile 会执行 /etc/profile.d 下的脚本,如图 2-6。

2-6

通过查看 ~/.bash_profile 中的代码可知,~/.bash_profile 会执行 ~/.bashrc,如图 2-7。

2-7

通过查看 ~/.bashrc 中的代码可知,~/.bashrc 会执行 /etc/bashrc,如图 2-8。

2-8

通过以上分析,我们可以得出 2 条依赖关系,/etc/profile -> /etc/profile.d,~/.bash_profile -> ~/.bashrc -> /etc/bashrc。

三、总结

本文介绍了环境变量相关的内容,希望能在以后的工作中帮到大家。