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

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

off999 2025-03-13 19:12 13 浏览 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钩子函数实现事件驱动系统(created钩子函数)

钩子函数(HookFunction)是现代软件开发中一个重要的设计模式,它允许开发者在特定事件发生时自动执行预定义的代码。在Python生态系统中,钩子函数广泛应用于框架开发、插件系统、事件处理和中...

Python函数(python函数题库及答案)

定义和基本内容def函数名(传入参数):函数体return返回值注意:参数、返回值如果不需要,可以省略。函数必须先定义后使用。参数之间使用逗号进行分割,传入的时候,按照顺序传入...

Python技能:Pathlib面向对象操作路径,比os.path更现代!

在Python编程中,文件和目录的操作是日常中不可或缺的一部分。虽然,这么久以来,钢铁老豆也还是习惯性地使用os、shutil模块的函数式API,这两个模块虽然功能强大,但在某些情况下还是显得笨重,不...

使用Python实现智能物流系统优化与路径规划

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。在现代物流系统中,优化运输路径和提高配送效率是至关重要的。本文将介绍如何使用Python实现智能物流系统的优化与路...

Python if 语句的系统化学习路径(python里的if语句案例)

以下是针对Pythonif语句的系统化学习路径,从零基础到灵活应用分为4个阶段,包含具体练习项目和避坑指南:一、基础认知阶段(1-2天)目标:理解条件判断的逻辑本质核心语法结构if条件:...

[Python] FastAPI基础:Path路径参数用法解析与实例

查询query参数(上一篇)路径path参数(本篇)请求体body参数(下一篇)请求头header参数本篇项目目录结构:1.路径参数路径参数是URL地址的一部分,是必填的。路径参...

Python小案例55- os模块执行文件路径

在Python中,我们可以使用os模块来执行文件路径操作。os模块提供了许多函数,用于处理文件和目录路径。获取当前工作目录(CurrentWorkingDirectory,CWD):使用os....

python:os.path - 常用路径操作模块

应该是所有程序都需要用到的路径操作,不废话,直接开始以下是常用总结,当你想做路径相关时,首先应该想到的是这个模块,并知道这个模块有哪些主要功能,获取、分割、拼接、判断、获取文件属性。1、路径获取2、路...

原来如此:Python居然有6种模块路径搜索方式

点赞、收藏、加关注,下次找我不迷路当我们使用import语句导入模块时,Python是怎么找到这些模块的呢?今天我就带大家深入了解Python的6种模块路径搜索方式。一、Python模块...

每天10分钟,python进阶(25)(python进阶视频)

首先明确学习目标,今天的目标是继续python中实例开发项目--飞机大战今天任务进行面向对象版的飞机大战开发--游戏代码整编目标:完善整串代码,提供完整游戏代码历时25天,首先要看成品,坚持才有收获i...

python 打地鼠小游戏(打地鼠python程序设计说明)

给大家分享一段AI自动生成的代码(在这个游戏中,玩家需要在有限时间内打中尽可能多的出现在地图上的地鼠),由于我现在用的这个电脑没有安装sublime或pycharm等工具,所以还没有测试,有兴趣的朋友...

python线程之十:线程 threading 最终总结

小伙伴们,到今天threading模块彻底讲完。现在全面总结threading模块1、threading模块有自己的方法详细点击【threading模块的方法】threading模块:较低级...

Python信号处理实战:使用signal模块响应系统事件

信号是操作系统用来通知进程发生了某个事件的一种异步通信方式。在Python中,标准库的signal模块提供了处理这些系统信号的机制。信号通常由外部事件触发,例如用户按下Ctrl+C、子进程终止或系统资...

Python多线程:让程序 “多线作战” 的秘密武器

一、什么是多线程?在日常生活中,我们可以一边听音乐一边浏览新闻,这就是“多任务处理”。在Python编程里,多线程同样允许程序同时执行多个任务,从而提升程序的执行效率和响应速度。不过,Python...

用python写游戏之200行代码写个数字华容道

今天来分析一个益智游戏,数字华容道。当初对这个游戏颇有印象还是在最强大脑节目上面,何猷君以几十秒就完成了这个游戏。前几天写2048的时候,又想起了这个游戏,想着来研究一下。游戏玩法用尽量少的步数,尽量...

取消回复欢迎 发表评论: