当前位置: 首页 > 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.rkmt.cn/news/1444722.html

相关文章:

  • 别再只盯着NeRF了!用3D高斯泼溅(Gaussian Splatting)在Unity里5分钟搞个实时渲染Demo
  • 告别简陋文档!手把手教你用HTML和reStructuredText美化Codesys自定义库帮助文档
  • 通诚无忧-通辽信息港本地化分类信息平台的SEO实战——让通辽用户找到你
  • Win11笔记本风扇太响,装完官方驱动WiFi图标直接没了?别慌,试试这个‘后悔药’功能找回原厂驱动
  • SQL JOIN类型太多分不清?一张图+三行代码,带你彻底弄懂最核心的INNER JOIN
  • 抖音批量下载终极指南:免费高效保存你喜欢的短视频内容
  • 别再纠结选哪个了!用Python实战对比XGBoost、LightGBM和CatBoost在表格数据上的表现
  • 3.57 OFVL-MS:一次用于多个室内场景的视觉定位
  • 别再硬编码了!深入CL_MD_BP_MAINTAIN,理解SAP BP新架构下的数据同步机制
  • Proteus仿真避坑指南:为什么你的AT89C51流水灯程序烧录后不亮?
  • 从SAM到FastSAM:一个YOLOv8开发者视角下的图像分割‘平替’方案实战
  • 2026年知名的非标滑梯/户外滑梯优质厂家推荐榜 - 品牌宣传支持者
  • MLP及其在预测中的应用
  • 信A第十二周题解
  • 2026年靠谱的户外滑梯/温州乐园滑梯/定制滑梯生产厂家推荐 - 行业平台推荐
  • 3分钟掌握res-downloader:全网资源一键下载的终极方案
  • **string*、*object**和**struct**
  • geth常用命令
  • 告别手动画圈!用Perl脚本自动化统计MS动力学模拟中的氢键变化
  • 别再纠结选哪个了!用鸢尾花数据集手把手对比XGBoost、LightGBM和CatBoost(附Python代码)
  • 【会议征稿通知 | 北京航空航天大学主办 | IEEE出版 | EI 、Scopus稳定检索】第六届智能通信与计算国际学术会议(ICICC 2026)
  • 别再羡慕别人的丝滑慢动作了!手把手教你用Super SloMo给视频补帧(附Python代码)
  • 【独家内测实录】Sora 2面部表情生成API调用失败率下降92.7%的7个隐藏配置项(附GitHub验证脚本)
  • 手把手解读ACPI表:用Linux命令‘窥探’你电脑的电源管理蓝图
  • 好用还专业!2026年最流行一键生成论文工具榜单,AI工具一键写高质论文
  • 如何用现代化Rust工具彻底改变Total War模组开发:终极指南
  • Longest Valid Parentheses(动态规划)
  • 2026年亲测AI论文写作软件榜单(安全合规版)
  • Sora 2配音与Premiere Pro/FCPX/Davinci Resolve无缝协同指南,附官方未文档化的Timecode Injection协议
  • 2026年近期想找温州老爹鞋直销厂商?这五家实力供应商值得关注 - 2026年企业资讯