百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Linux 系统常用的 30 个系统环境变量全解析

off999 2025-03-13 19:12 17 浏览 0 评论

在 Linux 系统中,环境变量起着至关重要的作用,它们犹如隐藏在系统背后的 “魔法指令”,掌控着诸多程序的运行路径、配置信息等关键要素。尤其在 shell 脚本编写时,巧妙运用环境变量,能让脚本如虎添翼,极大提升效率。接下来就为大家详细介绍 30 个常用的系统环境变量及其使用方式。

一、PATH

这可能是最广为人知的环境变量之一。它定义了系统在哪些目录下查找可执行文件。例如,当你在终端输入一个命令(如 ls)时,系统就会按照 PATH 变量所列出的目录顺序,依次查找名为 ls 的可执行文件。

使用示例:

在 shell 脚本中,如果要调用一个不在当前目录下的自定义脚本或工具,确保其所在目录已添加到 PATH 中,就可以直接使用命令调用,无需输入完整路径。假设你有个自定义脚本 myscript.sh 在 /home/user/scripts 目录下,将该目录添加到 PATH(export PATH=$PATH:/home/user/scripts)后,就能在任意目录下直接运行 myscript.sh。

二、HOME

指向当前用户的主目录。这在很多操作中都极为实用,比如保存用户的配置文件、个人数据等。在脚本中需要访问用户特定的配置文件时,就可以使用 $HOME/.config/filename 这样的路径,确保在不同用户下都能正确定位到对应的配置文件,增强脚本的通用性。

三、SHELL

指定当前用户所使用的 shell 程序路径,如 /bin/bash 或 /bin/zsh 等。了解这个变量有助于在脚本中根据不同 shell 特性进行兼容性处理。

使用示例:

#通过判断 SHELL 变量,脚本可以针对不同 shell 执行差异化代码。
if [ "$SHELL" = "/bin/bash" ]; 
then 
		echo "Using bash shell"; 
fi

四、USER

保存当前用户名,在需要识别操作主体时很有用。记录操作日志时,可以加上用户名信息,echo "User $USER executed the script at $(date)" >> log.txt,方便追踪责任人, 在运行nginx 的服务中,默认情况下nginx 是以nginx 用户运行的,如果我们想修改为当前用户运行,只需要修改nginx.conf 文件中的第一行 user ${USER} 改成这样即可。

五、PWD

代表当前工作目录,随时获取脚本运行时的位置信息。在脚本需要备份当前目录下文件到指定位置时,cp -r $PWD/* /backup/dir,确保备份的源文件路径准确无误。

六、LANG

定义系统的语言环境,影响程序的本地化输出,如显示的菜单、错误信息等语言风格。如果想在脚本中临时切换语言环境输出特定语言的提示信息,export LANG=fr_FR.UTF-8 可将语言切换为法语,随后的 echo 等输出就会以法语显示。

七、TERM

表示当前终端类型,像 xterm、vt100 等。一些需要与终端交互的程序依赖此变量来适配不同终端特性。在运行基于文本界面的交互式程序时,它能确保程序按终端能力正确显示格式,如 vim 编辑器会根据 TERM 值优化显示效果。

八、PS1

用于定制命令行提示符样式,可添加用户名、主机名、当前目录等信息,让提示符更具辨识度。export PS1='[\u@\h \w]\$ ',会让提示符显示为 [用户名@主机名 当前目录]$ 形式,方便用户随时知晓所处环境。

九、HOSTNAME

存放当前主机的名称,在网络配置、分布式系统操作中有广泛应用。在集群环境下,脚本需要区分不同节点执行不同任务时,if [ "$HOSTNAME" = "node1" ]; then start_service1; fi,根据主机名精准调度。

十、MAIL

指向用户的邮件收件箱文件路径,与邮件相关程序联动,比如邮件客户端可借此找到收件箱。若有脚本监控邮件状态,可通过检查 MAIL 路径下文件的变化来判断是否有新邮件到达。

十一、LD_LIBRARY_PATH

指定共享库的搜索路径。当程序运行需要链接外部共享库时,会在此路径下查找。

使用示例:

# 对于自行编译安装的软件,其依赖的特殊库在非标准位置时,确保程序运行不报错。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/mylibs

十二、INPUTRC

指向 readline 库的初始化配置文件路径,用于定制命令行输入的快捷键、自动补全等行为。若想在脚本运行时让用户输入更便捷,可修改 INPUTRC 指向的配置文件,添加自定义快捷键,如设置 Ctrl + E 为快速跳到行尾。

十三、HISTSIZE

定义命令历史记录的行数,控制 bash 历史记录保存规模。

使用示例:

export HISTSIZE=1000  # 可将历史记录行数扩展到 1000 条,方便回溯之前执行过的命令。

十四、HISTFILESIZE

与 HISTSIZE 类似,但它决定历史记录文件的最大行数,持久化保存历史记录。

使用示例:

export HISTFILESIZE=2000   # 保障即使多次打开终端,历史命令文件也能留存足够多的有用信息。

十五、TMPDIR

指定临时文件的存放目录,程序运行产生的临时数据都会放在此处。在脚本中创建临时文件时,mktemp -p $TMPDIR tmpfile.XXXXXX,确保临时文件统一管理,便于清理且不占用系统关键空间。

十六、EDITOR

设定默认的文本编辑器,像 vi、nano 等。当需要编辑文本时,系统按此变量调用编辑器。

使用示例:

export EDITOR=vim   # 之后运行 git commit 等需要编辑提交信息的命令,就会自动弹出 vim 编辑器。

十七、VISUAL

与 EDITOR 类似,不过更倾向于可视化编辑器,优先级稍高。如果两者都设置,优先使用 VISUAL。

使用示例:

export VISUAL=gedit   # 对于习惯图形化编辑的用户,执行相关操作时会打开 gedit 进行文本处理。

十八、TZ

设置系统的时区,保证时间显示符合当地习惯。

使用示例:

export TZ='Asia/Shanghai',将系统时区调整为上海时区,确保 date 等时间相关函数输出正确当地时间。

十九、LESS

定制 less 命令的默认行为,如是否显示行号、语法高亮等。

使用示例:

export LESS='-N -R',让 less 查看文件时默认显示行号且支持彩色语法高亮,提升阅读体验。

二十、GREP_OPTIONS

为 grep 命令设置默认选项,如忽略大小写、显示匹配行上下文等。

使用示例:

export GREP_OPTIONS='-i -C 2'  # 后续执行 grep 时都会自动忽略大小写并显示匹配行前后各 2 行上下文。

二十一、MANPATH

定义 man 手册页的搜索路径,方便查找不同软件包的帮助文档。

使用示例:

# 当安装了自定义软件并带有手册页在 /opt/mydoc/man 目录下
# 设置这个变量之后就能通过 man mycommand 查找到对应手册。
export MANPATH=$MANPATH:/opt/mydoc/man  

二十二、CPATH

供 C 语言编译器查找头文件的路径,编译 C 程序时必备。对于引入自定义头文件的 C 项目,export CPATH=$CPATH:/home/user/include,确保编译顺利进行。

二十三、CFLAGS

传递给 C 语言编译器的额外编译选项,如优化级别、调试信息等。

使用示例:

export CFLAGS='-O2 -g' # 开启二级优化并添加调试信息,让编译出的程序既高效又便于调试。

二十四、CPPFLAGS

类似 CFLAGS,但主要用于 C++ 编译器,处理 C++ 特定的预处理选项。

使用示例:

export CPPFLAGS='-I/home/user/cpplibs/include'  # 指定 C++ 项目额外的头文件搜索路径。

二十五、CXXFLAGS

C++ 编译器的编译标志,是 CFLAGS 在 C++ 语境下的延伸,综合控制编译过程。

使用示例:

export CXXFLAGS='-std=c++11 -Wall'  # 启用 C++11 标准并开启所有警告,提升代码质量。

二十六、LDFLAGS

用于指定链接器的选项,如链接库路径、库名称等,在程序最终链接阶段起作用。

使用示例:

export LDFLAGS='-L/home/user/libs -lmylib'  # 告知链接器到指定目录查找 mylib 并链接进程序。

二十七、MAKEFLAGS

为 make 命令提供默认参数,优化构建过程,比如并行构建任务数。

使用示例:

export MAKEFLAGS='-j4'  #让 make 在编译大型项目时最多同时运行 4 个任务,加快构建速度。

二十八、SSH_AUTH_SOCK

指向 SSH 认证套接字文件,用于 SSH 密钥认证等安全登录相关操作。在自动化脚本中通过 SSH 连接远程服务器时,确保此变量正确设置,保障密钥认证顺畅,无需重复输入密码。

二十九、DISPLAY

在图形化环境下,指定 X Server 的显示地址,用于图形程序找到显示输出目标。运行图形化应用程序时,如 gedit,若远程连接到服务器且需要图形显示,需正确设置 DISPLAY 环境变量指向本地 X Server。

三十、RANDOM

这是一个特殊的变量,每次引用它都会生成一个 0 - 32767 之间的随机整数,常用于脚本生成随机数场景。

使用示例:

echo $RANDOM % 100  # 可获取一个 0 - 99 之间的随机数,用于模拟抽奖、生成随机端口号等场景。

掌握这些常用的 Linux 系统环境变量,不仅能让日常命令行操作更加得心应手,更能在 shell 脚本编写中充分发挥其强大威力,让脚本更智能、高效、通用。不断实践运用,定能挖掘出更多奇妙用法

相关推荐

使用 python-fire 快速构建 CLI_如何搭建python项目架构

命令行应用程序是开发人员最好的朋友。想快速完成某事?只需敲击几下键盘,您就已经拥有了想要的东西。Python是许多开发人员在需要快速组合某些东西时选择的第一语言。但是我们拼凑起来的东西在大多数时候并...

Python 闭包:从底层逻辑到实战避坑,附安全防护指南

一、闭包到底是什么?你可以把闭包理解成一个"带记忆的函数"。它诞生时会悄悄记下自己周围的变量,哪怕跑到别的地方执行,这些"记忆"也不会丢失。就像有人出门时总会带上...

使用Python实现九九乘法表的打印_用python打印一个九九乘法表

任务要求九九乘法表的结构如下:1×1=11×2=22×2=41×3=32×3=63×3=9...1×9=92×9=18...9×9=81使用Python编写程序,按照上述格式打印出完整的九...

吊打面试官(四)--Java语法基础运算符一文全掌握

简介本文介绍了Java运算符相关知识,包含运算规则,运算符使用经验,特殊运算符注意事项等,全文5400字。熟悉了这些内容,在运算符这块就可以吊打面试官了。Java运算符的规则与特性1.贪心规则(Ma...

Python三目运算基础与进阶_python三目运算符判断三个变量

#头条创作挑战赛#Python中你学会了三步运算,你将会省去很多无用的代码,我接下来由基础到进阶的方式讲解Python三目运算基础在Python中,三目运算符也称为条件表达式。它可以通过一行代码实现条...

Python 中 必须掌握的 20 个核心函数——set()详解

set()是Python中用于创建集合的核心函数,集合是一种无序、不重复元素的容器,非常适合用于成员检测、去重和数学集合运算。一、set()的基本用法1.1创建空集合#创建空集合empty_se...

15个让Python编码效率翻倍的实用技巧

在软件开发领域,代码质量往往比代码数量更重要。本文整理的15个Python编码技巧,源自开发者在真实项目中验证过的工作方法,能够帮助您用更简洁的代码实现更清晰的逻辑。这些技巧覆盖基础语法优化到高级特性...

《Python从小白到入门》自学课程目录汇总(和猫妹学Python)

小朋友们好,大朋友们好!不知不觉,这套猫妹自学Python基础课程已经结束了,猫妹体会到了水滴石穿的力量。水一直向下滴,时间长了能把石头滴穿。只要坚持不懈,细微之力也能做出很难办的事。就比如咱们的学习...

8÷2(2+2) 等于1还是16?国外网友为这道小学数学题吵疯了……

近日,国外网友因为一道小学数学题在推特上争得热火朝天。事情的起因是一个推特网友@pjmdoll发布了一条推文,让他的关注者解答一道数学题:Viralmathequationshavebeen...

Python学不会来打我(21)python表达式知识点汇总

在Python中,表达式是由变量、运算符、函数调用等组合而成的语句,用于产生值或执行特定操作。以下是对Python中常见表达式的详细讲解:1.1算术表达式涉及数学运算的表达式。例如:a=5b...

Python运算符:数学助手,轻松拿咧

Python中的运算符就像是生活中的数学助手,帮助我们快速准确地完成这些计算。比如购物时计算总价、做家务时分配任务等。这篇文章就来详细聊聊Python中的各种运算符,并通过实际代码示例帮助你更好地理解...

Python学不会来打我(17)逻辑运算符的使用方法与使用场景

在Python编程中,逻辑运算符(LogicalOperators)是用于组合多个条件表达式的关键工具。它们可以将多个布尔表达式连接起来,形成更复杂的判断逻辑,并返回一个布尔值(True或Fa...

Python编程基础:运算符的优先级_python中的运算符优先级问题

多个运算符同时出现在一个表达式中时,先执行哪个,后执行哪个,这就涉及运算符的优先级。如数学表达式,有+、-、×、÷、()等,优先级顺序是()、×、÷、+、-,如5+(5-3)×4÷2,先计算(5-3)...

Python运算符与表达式_python中运算符&的功能

一、运算符分类总览1.Python运算符全景图2.运算符优先级表表1.3.1Python运算符优先级(从高到低)优先级运算符描述结合性1**指数右→左2~+-位非/一元加减右→左3*//...

Python操作Excel:从基础到高级的深度实践

Python凭借其丰富的库生态系统,已成为自动化处理Excel数据的强大工具。本文将深入探讨五个关键领域,通过实际代码示例展示如何利用Python进行高效的Excel操作,涵盖数据处理、格式控制、可视...

取消回复欢迎 发表评论: