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

相关推荐
tg_xianheyun1 小时前
CDN节点分布如何影响网页加载速度和用户体验
服务器·cdn加速·全球访问优化
lsh曙光1 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫1 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
布鲁飞丝2 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567882 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
似的8352 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
HiDev_2 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
夏殇之殁3 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
龙仔7253 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪3 小时前
嵌入式Linux----网络通信
linux·运维·服务器