一、什么是环境变量?

想象一下,你在Windows里打开一个软件时,系统会自动记住你安装的路径、常用的工具位置。在Linux中,环境变量就像这样的“系统记忆”——它是一类包含数据的变量,用来存储系统或程序运行时需要的信息,比如软件安装路径、用户信息、语言设置等。

简单说,环境变量是系统“记住”的一些配置,让你不用重复输入复杂信息,比如每次运行Python时,系统能自动找到Python的位置。

二、为什么要设置环境变量?

最常见的场景是:让系统能找到你想运行的程序。比如你写了一个自己的脚本(比如test.sh),想在任何目录下都能直接运行,而不用每次都输入完整路径(比如./test.sh)。这时候把脚本所在的目录加到环境变量PATH里,就能直接输入test.sh运行了。

其他例子:
- PATH:系统搜索可执行文件的路径列表(比如lspython等命令的位置)。
- LANG:控制系统的语言(比如中文显示乱码时,可能需要设置LANG=zh_CN.UTF-8)。
- HOME:指向你的家目录(比如/home/yourname,用~代替)。

三、如何查看环境变量?

你可以用以下命令快速查看环境变量:

  1. 查看单个变量
   echo $变量名

比如想知道当前路径(当前所在目录):

   echo $PWD

想知道用户名:

   echo $USER
  1. 查看所有环境变量
    - 用env命令:列出所有环境变量(不带参数)。
    - 用printenv命令:和env类似,也能列出所有变量,还可以指定变量名(比如printenv PATH)。

四、临时设置环境变量(仅当前终端有效)

临时设置是指只在当前打开的终端窗口生效,关闭终端后失效。用export命令即可:

# 设置变量,格式:export 变量名=值
export MY_VAR="hello"
export PATH=$PATH:/new/path  # 追加路径到PATH(后面会详细讲PATH)

设置后,用echo $MY_VAR就能看到结果。比如:

echo $MY_VAR  # 输出:hello

五、永久设置环境变量(重启后仍生效)

临时设置只在当前终端有用,若想让变量一直生效(比如每次打开终端都有这个变量),需要修改配置文件。Linux下有两种级别的配置文件:

1. 用户级配置文件(仅对当前用户生效)
  • ~/.bashrc:每次打开新终端(bash)时自动执行,适合添加用户专属配置。
  • ~/.profile:部分shell启动时执行(比如bash),也可放用户配置。

修改方法:

# 打开配置文件(用nano或vim编辑器)
nano ~/.bashrc  # 或 vim ~/.bashrc

# 在文件末尾添加一行(注意:等号两边不能有空格)
export MY_VAR="hello"

# 保存后生效(source是关键!)
source ~/.bashrc  # 或 source ~/.profile
2. 系统级配置文件(对所有用户生效,需sudo权限)
  • /etc/profile:所有用户登录时执行(系统级全局配置)。
  • /etc/environment:系统环境变量(通常不直接修改,可通过/etc/profile.d/*.sh添加脚本)。

修改系统级文件需管理员权限(sudo):

sudo nano /etc/profile  # 或其他系统级文件

六、最重要的环境变量:PATH

PATH是系统搜索可执行文件的“路径列表”,格式类似:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

系统运行命令时,会按顺序在PATH的每个目录里找对应的程序。如果你的程序(比如自己写的脚本)放在~/scripts目录下,想在任何位置运行它,只需把~/scripts加到PATH里:

# 临时添加到PATH
export PATH=$PATH:~/scripts

# 永久添加到~/.bashrc
echo 'export PATH=$PATH:~/scripts' >> ~/.bashrc
source ~/.bashrc  # 生效

现在你在任何目录执行your_script.sh就能直接运行了!

七、常见环境变量速查

变量名 作用 例子
PATH 系统搜索可执行文件的路径列表 包含/usr/bin(系统命令)、/home/user/bin(用户脚本)等
HOME 当前用户的家目录 /home/yourname
USER 当前用户名 yourname
LANG 系统语言/字符编码 LANG=zh_CN.UTF-8(中文显示)
PS1 终端提示符 \[\e]0;\u@\h:\w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$(自定义提示符)

八、注意事项

  1. 临时 vs 永久:临时用export,永久用配置文件。
  2. 权限问题:修改系统级文件(如/etc/profile)需加sudo,避免误改系统配置。
  3. 变量值含空格:用引号包裹,比如export MY_VAR="hello world"
  4. 生效方式:修改配置文件后,需执行source 文件名或重启终端才会生效。

总结

环境变量是Linux中让系统“记住”配置的关键,学会设置和查看它们能极大提升效率。重点掌握PATH(让程序可全局运行)和配置文件的使用,你就能灵活管理系统环境了!多尝试echo $变量名env命令,很快就能熟悉环境变量的作用~

小夜