🏷️ 标签:Linux Shell 内置命令 外部命令 Linux命令详解 运维入门 📝 适用人群:Linux 初学者、运维、后端开发、计算机专业学生 💡 文章亮点:通俗易懂讲解内建命令、外部命令本质区别、执行流程、如何区分、使用场景,零基础也能看懂,可直接发布 CSDN

一、前言

我们每天在 Linux 终端输入各种命令: cd、pwd、ls、mkdir、echo、date......

但很多人不知道:Linux 命令分为两大类

内置命令(内建命令 Shell Built-in)

外部命令(外部磁盘可执行文件)

很多面试也常问: cd 为什么不需要外部程序? ls 和 cd 有什么本质区别? 内置命令和外部命令执行流程有什么不同?

本文一次性讲透,看完彻底搞懂。

二、什么是内置命令(内建命令)

2.1 定义

内置命令 :是 Shell 程序内部自带的命令 , 没有独立的可执行文件,随 Shell 启动常驻内存。

2.2 特点

无独立磁盘程序

执行不创建子进程,速度极快

直接在当前 Shell 进程中运行

不需要去磁盘搜索路径

始终可用,不需要依赖环境变量 PATH

2.3 常见内置命令plaintext

复制代码

cd、pwd、echo、exit、history、type、alias、unset、source

三、什么是外部命令

3.1 定义

外部命令 :是独立的可执行二进制文件 , 放在系统 bin、sbin 等目录下。

3.2 特点

有独立可执行文件

执行时会创建子进程

需要根据 PATH 路径搜索文件

磁盘查找、加载运行,速度比内置慢

文件删除后命令就失效

3.3 常见外部命令

复制代码

ls、mkdir、rm、cp、mv、cat、ping、ifconfig、systemctl

四、如何区分内置命令 & 外部命令

使用 type 命令,一秒区分。

示例 1:内置命令

复制代码

type cd

输出:

复制代码

cd is a shell builtin

表示:cd 是内置命令

示例 2:外部命令

复制代码

type ls

输出:

复制代码

ls is /usr/bin/ls

表示:ls 是外部可执行文件

示例 3:既有内置也有外部

部分命令既有内置版本,也有外部版本

复制代码

type echo

五、内置命令与外部命令核心区别

对比项

内置命令

外部命令

存在形式

Shell 内部自带

独立可执行文件

磁盘文件

无

有(/bin、/usr/bin)

是否创建子进程

不创建

创建子进程

执行速度

极快

较慢

是否依赖 PATH

不依赖

依赖 PATH 环境变量

常驻内存

是

用时加载,用完释放

示例

cd、pwd、exit、echo

ls、mkdir、rm、cat

六、执行原理与流程

6.1 内置命令执行流程

输入命令

Shell 直接识别为内置

当前进程执行

无需磁盘搜索、无需创建子进程 速度非常快

6.2 外部命令执行流程

输入命令

Shell 判断不是内置

去 PATH 路径 依次搜索可执行文件

找到对应二进制程序

fork 创建子进程 → exec 加载运行

子进程结束退出

流程更长、速度更慢

七、为什么 cd 是内置命令?

很多同学疑惑: 为什么 cd 不能做成外部命令?

原因核心: cd 的作用是切换当前 Shell 进程的工作目录

如果 cd 是外部命令:

会创建子进程

子进程切换目录

主 Shell 进程目录完全不会变化

所以 cd 必须是内置命令,只能在当前 Shell 进程内生效。

八、查找外部命令所在路径

8.1 which 命令

查找外部命令真实路径

复制代码

which ls

which mkdir

8.2 whereis 命令

查找命令、源码、帮助文档

复制代码

whereis ls

8.3 查看 PATH 环境变量

复制代码

echo $PATH

外部命令只能在 PATH 包含的目录中找到。

九、典型面试题总结

什么是 Linux 内置命令? Shell 内部自带,无独立程序,不创建子进程,执行快。

什么是 Linux 外部命令? 独立可执行文件,依赖 PATH,执行创建子进程。

cd 为什么必须是内置命令? 切换目录需要修改当前 Shell 进程环境,子进程无法影响父进程。

怎么判断命令是内置还是外部? 使用 type 命令

内置命令和外部命令哪个快? 内置命令更快,不创建进程、不磁盘查找。

十、总结

内置命令:Shell 自带、无文件、不创建子进程、速度快

外部命令:独立可执行文件、依赖 PATH、创建子进程

用 type 可以快速区分命令类型

cd、pwd、exit、history 都是典型内置

ls、mkdir、rm、cat 都是典型外部

理解两者区别,是 Linux 基础 + 面试必备知识点

版权声明

本文为原创 Linux 技术文章,CSDN 首发,详细解析内置命令与外部命令原理、区别、执行流程,适合学习与面试复习,禁止未经授权转载、抄袭、搬运。