开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

CentOS 7.3验证Linux命令执行的优先级

简介:
+关注继续查看
福利推荐:阿里云、腾讯云、华为云等大品牌云产品全线2折优惠活动来袭,4核8G云服务器899元/3年,新老用户共享优惠,点击这里立即抢购>>>

在Linux中,不同的目录下可能有相同的文件。虽然同名,两个文件的作用却完全不同。

无标题

执行同一命令,可能会显示完全不同的结果。如pwd本来显示当前工作目录,我们却可以定义别名使它输出时间。

无标题1

要了解命令执行的先后顺序,首先我们要明白内部命令和外部命令的不同。使用type command可以查看命令类型。

无标题2

我们可以看到以上四个命令的显示结果是完全不同的。

这里pwd是内部命令,cal是hash(缓存)命令,ls是别名,date则是外部命令。

这里要引进一个变量PATH,通过echo,我们可以查看变量PATH的值。

无标题3

CentOS 6.9与CentOS 7.3里PATH的值有所不同。

无标题4

不过两者中的PATH表示的都是是shell搜索命令执行的顺序。

在CentOS 7.3中我们可以用whereis 查看pwd的路径。

无标题5

可以看到此时的pwd路径为/usr/bin/pwd,后面的两个则是pwd命令的帮助文档。

这时我们执行enable -n pwd命令,禁用pwd原本的内部命令的功能。

这时type下,会发现pwd成了外部命令。

我们把/usr/sbin/ifconfig复制到/usr/loacl/sbin下并取名为pwd。

执行pwd,会输出ifconfig显示ip地址的功能。

无标题9

可以看出,外部命令的执行顺序是按PATH变量的值搜索的。

CentOS 7.3中PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin。冒号为分隔符。

上述中,/usr/local/sbin/下的pwd优先于/usr/bin下的pwd,执行/usr/local/sbin/pwd的结果。

这时我们可以使用rm -rf删除/usr/local/sbin/pwd。这时只有/usr/bin/pwd存在。

执行pwd,我们发现并没有输出当前工作目录。反而显示/usr/local/sbin/pwd不存在。

type pwd,此时的pwd是hash命令。

hash -d pwd,删除pwd的缓存。再执行pwd,pwd终于显示了当前的工作目录。

无标题10

上述证明,hash的命令执行要优先于PATH。

这时我们type pwd。

再次清除pwd的hash条目。再次复制ifconfig到/usr/local/sbin/pwd,使pwd输出ifconfig的效果。

无标题11

type以下,pwd再次成为hash命令。

enable pwd,使pwd恢复为内部命令。

执行pwd,输出为当前工作目录。

可知,内部命令执行优先于hash。

无标题12

alias pwd=cal,为pwd设置别名为cal。

执行pwd,我们会发现pwd输出了当月日历。

可知,alias(别名)的执行优先于builtin(内部命令)。

综上,命令执行的优先级即为:alias > 内部命令> hash > PATH 。当然,如果PATH中也找不到的话,就只能command not found了。

无标题13




















本文转自阿拉杜美美51CTO博客,原文链接:

http://blog.51cto.com/amelie/1947877

?,如需转载请自行联系原作者






版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux常用命令大全
pwd:显示当前路径 rmdir 删除空目录 ls 查看目录或文件信息 vi 文本编辑器 cp 复制 mv 移动 rm 删除文件或目录 find 查找文件 grep 过滤 cat 显示文本文件内容
52 0
Linux常用命令大全
Linux命令是我们学习大数据以及计算机相关知识的重要环节,Linux相比windows它的命令更加强大,可以完全通过命令来控制计算机,下面我将我了解到的命令列举一下,仅供大家参考:
63 0
最常用的Linux命令大全
最常用的Linux命令大全
88 0
97条 Linux 常用命令总结,速速收藏!(二)
Linux在我们学习和工作中都会遇到,了解一点常用命令让你不再是Linux小白。跟我一起来学习这些常用命令吧~
52 0
常用Linux命令大全(100%收藏食用??)
常用Linux命令大全(100%收藏食用??)
44 0
Linux常用命令大全
系统信息?arch 显示机器的处理器架构(1)?uname -m 显示机器的处理器架构(2)?uname -r 显示正在使用的内核版本?dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)?hdparm -i /dev/hda 罗列一个磁盘的架构特性?hdparm -tT /...
637 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS系统指南之Linux系统诊断
立即下载
ECS运维指南 之 Linux系统诊断
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载


http://www.vxiaotou.com