🏷️ 标签: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 首发,详细解析内置命令与外部命令原理、区别、执行流程,适合学习与面试复习,禁止未经授权转载、抄袭、搬运。