shell 的内建命令和外部命令

原文链接:https://www.cnblogs.com/chenny7/p/3705358.html

 一、 定义

        Shell执行的命令可以分为内建命令(built-in)和外部命令(external),前者是构建在shell内部;后者是一个独立的文件(可以是二进制文件,也可以是一个脚本)。

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

       外部命令:它的执行比较复杂,shell进程会fork一个子进程,父进程随后挂起,然后在子进程中exec加载外部文件,子进程返回后,父进程才继续执行。

       从上面的区别可以看出,内建命令的性能要优于外部命令,因为它没有新建进程的开销。

 二、 判断方法:

      type命令可以区别一个命令是内建命令,还是外部命令:

三、注意:

1. Shell会沿着路径$PATH来寻找外部命令,环境变量PATH是一个以冒号分隔的目录列表,

2. 用help命令查看系统的内建命令:

猜你喜欢

转载自blog.csdn.net/qq_40628106/article/details/86715825