Linux运维知识之CentOS 7.3验证Linux命令执行的优先级
小标 2018-11-26 来源 : 阅读 1228 评论 0

摘要:本文主要向大家介绍了Linux运维知识之CentOS 7.3验证Linux命令执行的优先级,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之CentOS 7.3验证Linux命令执行的优先级,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

可以看出,外部命令的执行顺序是按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终于显示了当前的工作目录。

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

这时我们type pwd。

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

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

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

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

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

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

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

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

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

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程