RHEL重要的环境变量

简介: Linux 系统中的环境变量是用来定义系 统运行环境的一些参数

变量是计算机系统用于保存可变值的数据类型。在 Linux 系统中,变量名称一般都是大 写的,命令则都是小写的,这是一种约定俗成的规范。Linux 系统中的环境变量是用来定义系 统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等。可以直接通过变量 名称来提取到对应的变量值。

在 Linux 系 统中一切都是文件,Linux 命令也不例外。那么,在用户执行了一条命令之后,Linux 系统中 到底发生了什么事情呢?简单来说,命令在 Linux 中的执行分为 4 个步骤。

第一步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是绝对 路径则直接执行,否则进入第 2 步继续判断。

第二步:Linux 系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名 称来替换原本的命令名称。

之前在使用 rm 命令删除文件时,Linux 系统都会要求用户确认是否执行删除操作,其实 这就是 Linux 系统为了防止用户误删除文件而特意设置的 rm 别名命令—“rm -i”

[root@rhel-8 ~]# rm initial-setup-ks.cfgrm: remove regular file 'initial-setup-ks.cfg'? y

可以用 alias 命令来创建一个属于自己的命令别名,语法格式为“alias 别名=命令”。若要 取消一个命令别名,则是用 unalias 命令,语法格式为“unalias 别名”。 将当前 rm 命令所被设置的别名取消掉,再删除文件试试:

[root@rhel-8 ~]# rm initial-setup-ks.cfg[root@rhel-8 ~]#

第三步:Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部 的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤 4 继 续处理。可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令:

[root@rhel-8 ~]# type echoecho is a shell builtin
[root@rhel-8 ~]# type uptimeuptime is /usr/bin/uptime

第四步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作 PATH, 可以简单地把它理解成是“解释器的小助手”,作用是告诉 Bash 解释器待执行的命令可能存 放的位置,然后 Bash 解释器就会乖乖地在这些位置中逐个查找。PATH 是由多个路径值组成 的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到 Bash 解释器对 Linux 命令的查找。

[root@rhel-8 ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@rhel-8 ~]# PATH=$PATH:/root/bin[root@rhel-8 ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

这里有比较经典的问题:“为什么不能将当前目录(.)添加到 PATH 中呢?”原因是,尽 管可以将当前目录(.)添加到 PATH 变量中,从而在某些情况下可以让用户免去输入命令所 在路径的麻烦。但是,如果黑客在比较常用的公共目录/tmp 中存放了一个与 ls 或 cd 命令同名的木马文件,而用户又恰巧在公共目录中执行了这些命令,那么就极有可能中招了。

所以,作为一名态度谨慎、有经验的运维人员,在接手一台 Linux 系统后一定会在执行 命令前先检查 PATH 变量中是否有可疑的目录。另外,读者从前面的 PATH 变量示例中是否 也感觉到环境变量特别有用呢?我们可以使用 env 命令来查看 Linux 系统中所有的环境变量。

image.png

一个相同的变量会因为用户身份的不同而具有不同的值。例如,使用下述 命令来查看 HOME 变量在不同的用户身份下都有哪些值:

[root@rhel-8 ~]# echo $HOME/root
[root@rhel-8 ~]# su - charlie[charlie@rhel-8 ~]$ echo$HOME/home/charlie

变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自 行创建变量来满足工作需求。例如,设置一个名称为 WORKDIR 的变量,方便用户更轻松地 进入一个层次较深的目录:

[root@rhel-8 ~]# mkdir /home/workdir[root@rhel-8 ~]# WORKDIR=/home/workdir/[root@rhel-8 ~]# cd $WORKDIR[root@rhel-8 workdir]# pwd/home/workdir

但是,这样的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用:

[root@rhel-8 workdir]# su charlie[charlie@rhel-8 workdir]$ cd$WORKDIR[charlie@rhel-8 ~]$ echo$WORKDIR

如果工作需要,可以使用 export 命令将其提升为全局变量,这样其他用户也就可以使用 它了:

[root@rhel-8 workdir]# export WORKDIR[root@rhel-8 workdir]# su charlie[charlie@rhel-8 workdir]$ cd$WORKDIR[charlie@rhel-8 workdir]$ pwd/home/workdir

后续要是不使用这个变量了,则可执行 unset 命令把它取消掉:

[charlie@rhel-8 workdir]$ unset WORKDIR
[charlie@rhel-8 workdir]$

直接在终端设置的变量能够立即生效,但在重启服务器后就会失效,因此我们需 要将变量和变量值写入到.bashrc 或者.bash_profile 文件中,以确保永久能使用它们。

相关文章
|
安全 Linux 数据安全/隐私保护
Linux 密码复杂度设置pam_pwquality、pam_passwdqc(centos7)
1、Linux对应的密码策略模块有:pam_passwdqc 和 pam_pwquality 。其中pam_passwdqc模块对应的是/etc/login.
6975 0
|
Rust 安全 Go
揭秘Rust语言:为何它能让你在编程江湖中,既安全驰骋又高效超车,颠覆你的编程世界观!
【8月更文挑战第31天】Rust 是一门新兴的系统级编程语言,以其卓越的安全性、高性能和强大的并发能力著称。它通过独特的所有权和借用检查机制解决了内存安全问题,使开发者既能享受 C/C++ 的性能,又能避免常见的内存错误。Rust 支持零成本抽象,确保高级抽象不牺牲性能,同时提供模块化和并发编程支持,适用于系统应用、嵌入式设备及网络服务等多种场景。从简单的 “Hello World” 程序到复杂的系统开发,Rust 正逐渐成为现代软件开发的热门选择。
389 1
|
机器学习/深度学习 人工智能 5G
5G天线设计的关键要点解析
5G天线设计的关键要点解析
584 64
|
11月前
|
人工智能 弹性计算 架构师
AIGC浪潮涌入高校,首届【弹性计算进校园】研讨会顺利举行
阿里云弹性计算团队于浙江工商大学,开展了首届【弹性计算进校园】交流活动。
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
|
Java 程序员 编译器
返回值不同算方法重载么?为什么?
本文解释了为什么返回值不同不算方法重载,强调了方法重载是基于方法名称和参数列表的,而返回值不是方法重载的考虑因素,因为返回值不影响JVM的方法签名,也不会造成编译时的歧义。
335 1
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
2481 1
|
传感器 物联网 微服务
Netty的源码分析和业务场景
【8月更文挑战第2天】Netty 是一款高性能的异步事件驱动网络框架,其源码深邃且复杂。通过采用Reactor模式与主从多线程设计,Netty能高效处理网络事件。例如,`NioEventLoop`负责I/O事件及任务执行,内置线程循环机制。内存管理方面,Netty提供高效内存池与`ByteBuf`类来减少开销并优化内存操作。在业务场景上,Netty广泛应用于分布式系统、微服务架构中的高效通信,以及实时通信场景如在线游戏和直播中的大量并发连接处理,同时也在物联网领域发挥重要作用,确保设备与服务器间稳定快速的数据传输。
208 1
|
安全 Linux
如何从 RHEL 7 升级到 RHEL 8?
如何从 RHEL 7 升级到 RHEL 8?
605 3
下一篇
oss云网关配置