一般来说,shell命令分为两种,一种是内置的命令,一种是外部命令。
1、内置命令
shell自带的命令叫做shell的内置命令,在内部是通过函数来实现的。当启动shell之后,这些命令所对应的函数代码就会被加载到内存中,因为这些命令是被直接加载到内存中,所以shell的内置命令在运行的时候是非常快的。
不过shell命令的内置命令不宜过多,过多的内置命令会让shell的体积变得很大,占用系统过多的资源。shell是一个常驻内存的程序,占用太多的内存会影响shell的运行。
2、外部命令
shell的本质就是一个函数或者一个应用程序,所以我们的外部命令也是对应一个应用程序。执行外部命令就是执行相应的程序。一般在Linux中,执行外部命令的时候,不会去所有的目录一个一个的查找是否有对应的应用程序,而只会在PATH环境变量的路径下查找是否有相应的应用程序,如果有的话就运行,没有的话就返回错误的信息给用户。
总结
Shell 内置命令的在本质上是一个自带的函数,执行内置命令也就是调用这个自带的函数。由于函数代码在 Shell 启动时候已经被加载到内存上,所以内置命令的执行速度很快。
Shell 外部命令的本质上是一个应用程序,执行外部命令也就是启动一个新的应用程序。因为要创建新的进程并把它加载应用程序的代码,所以外部命令的执行速度会很慢。