当前位置: 首页 > news >正文

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

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

http://www.jsqmd.com/news/933384/

相关文章:

  • 告别简陋文档!手把手教你用HTML和reStructuredText美化Codesys自定义库帮助文档
  • UE5 C++ 游戏模式配置避坑指南:从创建类到世界场景设置,一步到位
  • 【会议征稿通知 | 广州软件学院主办 | ACM、AP出版 | EI 、Scopus稳定检索】第六届教育、信息管理与服务科学国际学术会议(EIMSS 2026)
  • Umi-CUT:3步掌握高效图片批量处理全攻略
  • 如何在Windows 10/11系统上实现专业级窗口毛玻璃特效:DWMBlurGlass完整配置指南
  • 【c#基础】9.面向对象
  • 通诚无忧-通辽信息港本地化分类信息平台的SEO实战——让通辽用户找到你
  • 2026年评价高的无锡手持式激光除锈机/激光除锈机/手持式激光除锈机源头工厂推荐 - 品牌宣传支持者
  • 2026年知名的无锡激光清洗机/清洗机厂家选择推荐 - 品牌宣传支持者
  • Win11笔记本风扇太响,装完官方驱动WiFi图标直接没了?别慌,试试这个‘后悔药’功能找回原厂驱动
  • SQL JOIN类型太多分不清?一张图+三行代码,带你彻底弄懂最核心的INNER JOIN
  • 安路PH1A180 FPGA实战:用米联客FDMA IP实现DDR视频缓存,附源码与调试心得
  • 抖音批量下载终极指南:免费高效保存你喜欢的短视频内容
  • 多模态Agent:看懂图片并执行任务的AI
  • 别再纠结选哪个了!用Python实战对比XGBoost、LightGBM和CatBoost在表格数据上的表现
  • 3.57 OFVL-MS:一次用于多个室内场景的视觉定位
  • 2026年靠谱的手持式激光除锈机/无锡船厂除锈机/船厂除锈机/无锡激光除锈机长期合作厂家推荐 - 行业平台推荐
  • Proteus仿真避坑指南:为什么你的AT89C51流水灯程序烧录后不亮?
  • 告别手动标注!用Labelme+Bash脚本批量处理交通信号灯数据集(附一键转换脚本)
  • 别再硬编码了!深入CL_MD_BP_MAINTAIN,理解SAP BP新架构下的数据同步机制
  • 百度网盘API自动化离线下载:3种高效方法告别本地下载烦恼
  • 告别Wi-Fi死角?手把手教你用LED灯泡和树莓派搭建一个简易Li-Fi热点(附Python代码)
  • 从SAM到FastSAM:一个YOLOv8开发者视角下的图像分割‘平替’方案实战
  • ESP32项目文件结构扫盲:从main文件夹到build目录,每个文件到底是干嘛的?(附清理技巧)
  • 2026年知名的非标滑梯/户外滑梯优质厂家推荐榜 - 品牌宣传支持者
  • MLP及其在预测中的应用
  • 震惊!五恒空调技术大比拼,谁才是真正的王者?
  • 不止于Python:在Jetson Nano上为你的C++项目集成onnxruntime-gpu推理引擎(附CMake配置)
  • 从手机HDR到专业级合成:深入理解多曝光融合的底层逻辑与OpenCV实战
  • 别再用高斯噪声了!OpenCV实战:用瑞利和伽马噪声模拟真实图像退化(附Python代码)