Linux下的内部命令与外部命令的区别
白羽 2018-07-11 来源 :网络 阅读 959 评论 0

摘要:本文将带你了解Linux下的内部命令与外部命令的区别,希望本文对大家学Linux有所帮助。


Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但也有些细微差别。

 

内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。

 

外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin......等等。可通过“echo

 $PATH”命令查看外部命令的存储路径,比如:ls、vi等。

 

用type命令可以分辨内部命令与外部命令

 

[root@localhost account]# type cd

 

cd is a shell builtin

 

pwd命令用于显示当前工作目录,是Linux系统下最常用的命令之一。在不太能确定当前位置时,可以使用pwd命令来判断目录在文件系统内的确切位置。而涉及pwd指令,就不得不提及三个环境变量:PATH、OLDPWD、PWD。

 

PATH:执行文件路径的变量;"echo $PATH"(PATH前面加$表示后面接的是变量)

 

OLDPWD:表示前一次的工作目录;

 

PWD:表示当前的工作目录。

 

问题缘由:当输入“man pwd”时可以查看pwd的帮助文档,而输入“pwd --help”就提示有错误bash: pwd: --: invalid option;若输入“ /bin/pwd --help”就能正常显示pwd的帮助文档。

 

从网上查找原因并经过整合可知,这主要是由于内部命令和外部命令的区别,pwd是内部命令,而/bin/pwd就是外部命令。在显示当前目录时,/bin/pwd能显示当前工作目录的完整文件路径,能更准确些。在多人共享同一台Linux机器时,经常会发现当前目录被别人删除后,pwd命令仍然会显示那个目录。

 

后续试验:切换至root权限下,将/bin目录下的执行文件ls移动到非正规目录中去,mv /bin/ls /root(#mv为移动,可将文件在不同的目录间进行移动操作),然后不管在哪个目录底下输入任何与ls相关的指令,都不能顺利执行ls了(因为/root这个目录并不在PATH指定的目录中,外部命令ls是没法通过PATH路径找到执行文件ls),除非用/root/ls

 才行。

 

如果想要让root在任何目录下均可执行/root底下的ls,那么可以将/root加入到PATH当中,该命令PATH="$PATH":/root即可。若有两个ls指令在不同的目录中,例如/usr/local/bin/ls

 和/bin/ls ,那么当我下达 ls命令时,是根据PATH里面哪个目录先被查询到,则那个目录下的指令就先被执行。

 

而即使采用相同的方法移动/bin目录下的执行文件pwd,仍可以输入pwd命令执行,因为这时仍是调用内部命令pwd指令。

 

故shell命令解释器在执行命令时,是应先执行内部指令,若要执行的指令不是内部指令,则应是调用的外部指令。

 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标系统运维之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小时内训课程