在Linux系统中,环境变量是用于存储系统配置、用户信息以及程序运行所需参数的特殊变量,它们以“键=值”的形式存在,影响当前shell及其子进程的行为,查看环境变量是系统管理、调试程序和配置开发环境的基础操作,Linux提供了多种命令和方法来实现这一需求,下面将详细介绍常用方法及其应用场景。

使用printenv命令查看环境变量
printenv是专门用于显示环境变量的命令,也是最常用的方法之一,若直接输入printenv,则会列出当前shell所有的环境变量及其值,每行显示一个“变量名=值”的格式;若指定变量名(如printenv 变量名),则仅显示该变量的值。
示例:
- 查看所有环境变量:
printenv - 查看PATH变量:
printenv PATH(输出类似/usr/local/bin:/usr/bin:/bin,表示系统可执行文件的搜索路径) - 查看HOME变量:
printenv HOME(输出当前用户的主目录路径,如/home/username)
printenv的优势在于输出简洁,仅包含环境变量(不包含局部变量或shell函数),适合快速查看全局配置信息。
使用env命令查看环境变量
env命令与printenv功能类似,默认情况下也会显示所有环境变量,但env更常用于“临时设置环境变量并执行命令”的场景,例如env VAR=value command会为指定命令临时设置环境变量VAR,执行后该变量自动失效。
示例:
- 查看所有环境变量:
env - 结合
grep过滤变量:env | grep "PATH"(仅显示包含“PATH”的环境变量)
需要注意的是,env单独使用时与printenv输出一致,但若变量名与env内置选项冲突(如env -i会清空环境变量),需通过env --help查看帮助。
使用echo $变量名查看单个环境变量
若仅需查看某个特定环境变量的值,可通过echo $变量名实现,其中是变量引用符号。

示例:
- 查看当前用户名:
echo $USER(输出username) - 查看当前shell类型:
echo $SHELL(输出/bin/bash或/bin/zsh等) - 查看临时文件目录:
echo $TMPDIR(输出/tmp或其他自定义路径)
此方法灵活快捷,适合在脚本中快速获取变量值,但无法直接查看所有变量名需配合其他命令(如set)。
使用set命令查看所有变量(含环境变量)
set命令的功能更全面,它会显示当前shell中所有的变量,包括环境变量、局部变量、shell函数以及shell选项等。
示例:
- 查看所有变量:
set(输出量较大,建议通过set | less分页查看) - 查看变量数量:
set | wc -l(统计当前shell定义的变量总数)
set的优势在于全面,但缺点是输出中包含大量非环境变量信息,若仅关注环境变量,需结合grep过滤(如set | grep -E "^[^[:space:]]+=" | grep -v "BASH_ARGV",过滤出环境变量并排除shell内部变量)。
使用export命令查看已导出的环境变量
在Linux中,普通变量需通过export命令才能成为环境变量(即对子进程可见)。export命令不带参数时,会显示当前shell所有已导出的环境变量(即环境变量列表)。
示例:

- 查看已导出的环境变量:
export - 查看特定变量是否已导出:
export | grep "VAR"(若输出包含declare -x VAR="value",则表示已导出)
export常用于变量的定义与导出,例如export MY_VAR="hello"定义变量并导出为环境变量,之后子进程即可访问$MY_VAR。
使用declare命令查看变量属性
declare(或typeset)是bash内置命令,用于显示或设置变量的属性(如类型、作用域等),通过declare -x可筛选出环境变量(-x表示export属性)。
示例:
- 查看所有环境变量:
declare -x - 查看变量的详细属性:
declare -p PATH(输出declare -x PATH="/usr/local/bin:/usr/bin:/bin",显示变量名、属性和值)
declare适合需要分析变量属性的场景,例如检查变量是否为只读(declare -r)或数组类型(declare -a)。
不同查看方法的对比
| 命令 | 作用 | 输出特点 | 适用场景 |
|---|---|---|---|
printenv |
显示环境变量 | 仅环境变量,格式简洁 | 查看所有环境变量或指定变量值 |
env |
显示环境变量/临时设置变量 | 与printenv一致,支持选项 |
临时修改变量并执行命令 |
echo $VAR |
显示单个变量值 | 仅输出变量值,无变量名 | 快速获取特定变量值 |
set |
显示所有变量(含局部变量) | 输出全面,信息量大 | 调试或查看所有变量定义 |
export |
显示已导出的环境变量 | 仅显示已导出变量,带-x标识 |
检查变量是否为环境变量 |
declare |
显示变量及属性 | 可筛选环境变量(-x),显示属性 |
分析变量类型、作用域等 |
相关问答FAQs
问题1:环境变量和普通变量有什么区别?
解答:普通变量(局部变量)仅在当前shell进程中有效,子进程无法访问;而环境变量通过export导出后,会对当前shell的所有子进程生效,在shell中定义VAR="test"(普通变量),在子shell中无法访问;但通过export VAR="test"后,子shell可通过$VAR获取值,普通变量无需export,仅当前shell可用;环境变量需显式导出,作用域更广。
问题2:如何永久修改环境变量?
解答:永久修改环境变量需写入配置文件,根据作用范围分为用户级别和系统级别:
- 用户级别:仅对当前用户生效,编辑
~/.bashrc(bash)、~/.zshrc(zsh)等文件,添加export 变量名="值",保存后执行source ~/.bashrc立即生效(或重启终端)。 - 系统级别:对所有用户生效,编辑
/etc/environment(无需export,直接写入变量名="值")或/etc/profile(需export),保存后需重启系统或执行source /etc/profile生效。
注意:系统级别修改需谨慎,避免影响所有用户的正常使用。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31266.html