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

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

gudong366 2025-03-25 11:48 8 浏览

在 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 脚本编写中充分发挥其强大威力,让脚本更智能、高效、通用。不断实践运用,定能挖掘出更多奇妙用法

相关推荐

linux sed系列 第四篇:sed工业实战——日志处理与数据清洗

“掌握了sed的编程能力后,我们如同装备精良的工匠,终于可以踏入真实的工业战场。本篇将聚焦sed在日志分析、数据合规化、多文件批处理等场景中的应用,看它如何在海量数据中游刃有余,展现文本处理的...

Linux下sed的简单使用(linux中sed是什么意思)

1、sed简介stremeditor流编辑器,它是一项Linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大,sed编辑器是一行一...

linux基础命令之date命令(linux中的date)

date命令主要用于显示或者设置系统时间语法格式:date参数对象使用date命令时,最好先使用date--help命令查看支持哪些参数,有些小型Linux系统下的date命令,只支持一些基本参...

Ubuntu linux 常用命令(ubuntu常用的50个命令)

使用dpkg命令来安装.deb包。sudodpkg-i~/example.deb如果在安装过程中遇到依赖问题,可以使用以下命令来修复:sudoapt-getinstall-f将flut...

Linux基础命令-sed命令(linux教程:sed命令的用法)

Sed全名streameditor流编辑器,它是一个强大的文本处理工具,它可以从文件中接受输入,也可以接受来自标准输入流的输入,它擅长取行。Sed的用途非常广泛,包括:1)文本替换2)选择性的输...

linux sed系列 第二篇:sed进阶技巧——地址定位与正则表达式

“上一篇我们掌握了sed的基础替换,如同获得了第一把钥匙。现在,让我们更进一步,学习如何精准锁定目标行,如同拥有了导航地图,让每一次操作都直击要害!”地址定位的四种维度sed的强大,很大程度上源...

火狐Firefox浏览器140发布:手动Unload标签页、优化翻译体验等

IT之家6月24日消息,Mozilla在发布版本139不到一个月后,推出了最新的开源网页浏览器Firefox140。新版本增加了手动Unload标签页的功能,优化了垂直标签页的调...

Linux 基本正则表达式及扩展正则表达式功能举例

在Linux中,正则表达式(RegularExpression)是一种强大的模式匹配工具,用于在文本中查找、匹配和处理特定模式的字符串。Linux支持两种类型的正则表达式:基本正则表达式(Basic...

linux下find命令的经典26个使用示例

简介find命令是基于unix的操作系统中常用的工具之一。顾名思义,它在目录层次结构中查找文件和目录。用户可以传递不同的参数,并根据文件的名称、扩展名、类型、大小、权限、修改时间、所有者、组等搜索文件...

linux运维中特殊符号的应用与实践

路径位置类的特殊符号(1)、波浪线(~)在linux系统的命令行中,~表示用户的家目录,超级用户为/root,普通用户为/home。假设我当前目录在usr/local下[root@xrylocal]...

开源框架log4cpp实战(开源gui框架)

1.Log4cpp使用Log4cpp中主要包含Category(种类),Appender(附加器),Layout(布局),Priorty(优先级),NDC(嵌套的诊断上下文)。Category、App...

Linux find命令详解(linux find -l)

一、命令介绍Linuxfind命令是类unix操作系统中最重要和最常用的命令行实用程序之一。find命令用于根据指定的条件搜索和定位与参数匹配的文件和目录列表。find命令提供了广泛的选项,允许用户...

Linux运维:单引号与双引号的使用(linux 单引号和双引号)

1、单引号的使用单引号可以将它中间的所有任意字符还原为字面意义,实现屏蔽Shell元字符的功能。注意不可以在两个单引号中间单独插入一个单引号,单引号必须成对出现。示例1:定义一个变量,并输出变量的...

Linux技巧:find 命令用法详细说明,看完会有收获

在Linux命令中,find是比较复杂难用的命令。使用该命令搜索文件时,常常发现自己找了一些例子能用,但稍微改一下条件,就搜不到想要的结果。下面会以一些实例来说明使用find命令的关键要点和...

Linux Shell中单引号、双引号、反引号的解释

1、单引号('')单引号所见即所得,直接显示单引号里的内容。即单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。比如下面的例子,单引号所见即所得。2、双引号("...