3.5 Linux重要的环境变量

变量是计算机系统用于保存可变值的数据类型。在 Linux 系统中, 变量名称一般都是大写的 ,这是一种约定俗成的规范。我们可以直接通过变量名称来提取到对应的变量值。Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等。
Linux 系统中一切都是文件, Linux 命令也不例外。那么,在用户执行了一条命令之后,Linux 系统中到底发生了什么事情呢?简单来说,命令在 Linux 中的执行分为 4 个步骤。
第1步 判断用户是否以绝对路径或相对路径的方式输入命令(如 /bin/ls ),如果是的话则直接执行。
第2步 Linux 系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。可以用 alias 命令来创建一个属于自己的命令别名,格式为“alias rm= rm -i”或者
“alias 别名=命令”,若要取消一个命令别名,则是用 unalias 命令,格式为“unalias 别名”。我们之前在使用 rm 命令删除文件时,Linux 系统都会要求我们再确认是否执行删除操作,其实这就是 Linux 系统为了防止用户误删除文件而特意设置的 rm 别名命令,接下来我们把它取消掉:
[root@localhost ~]# ls
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  Templates
Desktop          Downloads  Music                 Public    Videos
[root@localhost ~]# rm anaconda-ks.cfg
rm: remove regular file ‘anaconda-ks.cfg’? y
[root@localhost ~]# alias rm
alias rm='rm -i'
[root@localhost ~]# unalias rm

第3步 Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤 4 继续处理。可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令。
第4步 系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作 PATH ,可以简单地把它理解成是“解释器的小助手”,作用是告诉 Bash 解释器待执行的命令可能存放的位置,然后 Bash 解释器就会乖乖地在这些位置中逐个查找。 PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到 Bash 解释器对Linux 命令的查找。
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# PATH=$PATH:/root/bin
[root@localhost ~]# 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 系统中所有的环境变量。
Linux 作为一个多用户多任务的操作系统,能够为每个用户提供独立的、合适的工作运行环境,因此,一个相同的变量会因为用户身份的不同而具有不同的值。例如,我们使用下述命令来查HOME 变量在不同用户身份下都有哪些值( su 是用于切换用户身份的命令)。
[root@localhost zhangxu]# echo $HOME
/root
[root@localhost zhangxu]# su zhangxu
[zhangxu@localhost ~]$ echo $HOME
/home/zhangxu
其实变量是由固定的变量名与用户或系统设置的变量值两部分组成的,完全可以自行创建变量,来满足工作需求。例如设置一个名称为 WORKDIR 的变量,方便用户更轻松地进入一个层次较深的目录:
[root@localhost zhangxu]# mkdir /home/work
[root@localhost zhangxu]# WORK=/home/work
[root@localhost zhangxu]# cd $WORK
[root@localhost work]# pwd
/home/work
但是,这样的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用。如果工作需要,可以使用 export 命令 将其提升为全局变量,这样其他用户也就可以使用它了:
[root@localhost work]# su zhangxu
[zhangxu@localhost work]$ cd $WORK
[zhangxu@localhost ~]$ echo $WORk

[zhangxu@localhost ~]$ exit
exit
[root@localhost work]# export WORK
[root@localhost work]# su zhangxu
[zhangxu@localhost work]$ cd $WORK
[zhangxu@localhost work]$ pwd
/home/work

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值