变量是计算机系统用于保存可变值的数据类型。在 Linux 系统中,变量名称一般都是大写的,这是一种约定俗成的规范。我们可以直接通过变量名称来提取到对应的变量值。Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等。
这篇博文主要说的是一些重要的环境变量。
命令执行步骤
命令在 Linux 中的执行分为 4 个步骤。
第 1 步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行。
第 2 步:Linux 系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。
第 3 步:Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤 4 继续处理。
第4 步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到 Bash 解释器对Linux 命令的查找。
别名命令是alias,我在linux命令里的rm条目提到了这个
用户输入的命令是内部命令还是外部命令,可以用“type 命令名称”来判断。
PATH作用是告诉 Bash 解释器待执行的命令可能存放的位置,然后 Bash 解释器就会在这些位置中逐个查找。
[ root@localhost zhan]#echo $PATH
/home/zhan/.local/bin : / home/zhan/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
[ rootalocalhost zhan]# PATH=$PATH : / root/bin[ root@localhost zhan]# echo $PATH
/home/zhan/.local/bin:/home/zhan/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
值得注意的是,尽管可以将当前目录(.)添加到 PATH 变量中,从而在某些情况下可以让用户免去输入命令所在路径的麻烦。但是,如果黑客在比较常用的公共目录/tmp 中存放了一个与 ls 或 cd 命令同
名的木马文件,而用户又恰巧在公共目录中执行了这些命令,那么就极有可能中招了。为了操作安全,每次用虚拟机的时候都要查看PATH里面有没有可疑的目录,避免被人利用
一个相同的变量会因为用户身份的不同而具有不同的值
[ root@localhost zhan]# echo $HOME/ root
[ root@localhost zhan]# su zhan[ zhan@localhost ~]$ echo $HOME/home/zhan
[ zhan@localhost ~]$ exit
exit
[ root@localhost zhan]#
注意退出用户的时候用exit,不然会变成用户套娃,环境变量带不过来。
其实变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自行创建变量,来满足工作需求。例如设置一个变量,方便用户更轻松地进入一个层次较深的目录:
[root@localhost zhan]# mkdir -p /home/tomcat/tomcat/bin[ root@localhost zhan]# BIN=/home/tomcat/tomcat/bin/
[ root@localhost zhan]# cd $BIN
[ root@localhost bin]#pwd
/home/tomcat/tomcat/bin
要让其他用户也能访问的话,要使用 export 命令将其提升为全局变量