Linux 内置命令与外部命令超详解(区别、原理、查找、执行流程)

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


一、前言

我们每天在 Linux 终端输入各种命令: cdpwdlsmkdirechodate......

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

  • 内置命令(内建命令 Shell Built-in)
  • 外部命令(外部磁盘可执行文件)

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

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


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

2.1 定义

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

2.2 特点

  1. 无独立磁盘程序
  2. 执行不创建子进程,速度极快
  3. 直接在当前 Shell 进程中运行
  4. 不需要去磁盘搜索路径
  5. 始终可用,不需要依赖环境变量 PATH

2.3 常见内置命令plaintext

复制代码
cd、pwd、echo、exit、history、type、alias、unset、source

三、什么是外部命令

3.1 定义

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

3.2 特点

  1. 有独立可执行文件
  2. 执行时会创建子进程
  3. 需要根据 PATH 路径搜索文件
  4. 磁盘查找、加载运行,速度比内置慢
  5. 文件删除后命令就失效

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 内置命令执行流程

  1. 输入命令
  2. Shell 直接识别为内置
  3. 当前进程执行
  4. 无需磁盘搜索、无需创建子进程 速度非常快

6.2 外部命令执行流程

  1. 输入命令
  2. Shell 判断不是内置
  3. PATH 路径 依次搜索可执行文件
  4. 找到对应二进制程序
  5. fork 创建子进程 → exec 加载运行
  6. 子进程结束退出

流程更长、速度更慢


七、为什么 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 包含的目录中找到。


九、典型面试题总结

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

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

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

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

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


十、总结

  1. 内置命令:Shell 自带、无文件、不创建子进程、速度快
  2. 外部命令:独立可执行文件、依赖 PATH、创建子进程
  3. type 可以快速区分命令类型
  4. cdpwdexithistory 都是典型内置
  5. lsmkdirrmcat 都是典型外部
  6. 理解两者区别,是 Linux 基础 + 面试必备知识点

版权声明

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

相关推荐
me8321 小时前
【Linux】Linux 目录命名规范溯源(Linux各个目录究竟是干嘛的)
linux·运维·数据库
H Journey1 小时前
Linux 查看进程端口占用命令整理
linux·运维·服务器
着迷不白2 小时前
二、Linux命令3要素及系统结构+文件的增删改查
linux·运维·服务器
heimeiyingwang2 小时前
【架构实战】搜索系统架构设计:从精准匹配到智能推荐
运维·架构·jenkins
zzzyyy5382 小时前
System V IPC 全链路深度解析 —— 从信号量原子性到内核多态再到物理内存共享
linux·服务器
不吃土豆的马铃薯2 小时前
Socket 网络编程实战教程
linux·服务器·开发语言·网络·c++·算法
Agent手记2 小时前
医药代表拜访计划能否通过AI自动生成优化?2026Agent自动化实战解析
运维·人工智能·ai·自动化
零号全栈寒江独钓2 小时前
c++跨平台实现日志重定向
linux·c++·windows
ID_180079054732 小时前
(淘宝 / 京东)商品评论 API 接口:技术实战案例与架构分析
服务器·数据库·架构