第3章 为什么输入一个命令,电脑就会执行?

发布时间:2026/7/1 17:56:32

第3章 为什么输入一个命令,电脑就会执行? 上一章我们知道程序不能直接控制硬件必须经过 Kernel。但是又出现一个问题。例如你打开 Linux。输入ls为什么电脑就知道我要查看目录是谁认识ls这个单词Kernel吗不是。真正认识它的是Shell。第1节 什么是 Shell英文Shell中文一般翻译命令解释器Command Interpreter为什么叫 Shell外壳因为它包裹在 Kernel 外面。可以理解成用户 ↓ Shell ↓ Kernel ↓ 硬件Shell就是用户和Kernel之间的翻译官。举一个生活例子。假设你去银行你不会直接操作银行后台系统。而是告诉柜员我要转账。柜员把你的意思翻译成银行后台能理解的操作。这里柜员就是Shell。银行后台就是Kernel。所以Shell就是一个负责理解命令、调用程序、把结果显示出来的软件。第2节 Shell 到底做了什么假设输入pwd整个过程其实发生了很多事情。第一步键盘收到p w d第二步Terminal显示pwd第三步你按Enter。第四步Shell开始工作。它首先想pwd 是什么它开始寻找有没有叫 pwd 的程序找到以后执行它。程序里面需要知道当前目录。于是程序向Kernel发起系统调用。Kernel返回/home/xShell收到以后把结果交给Terminal。Terminal显示出来整个流程键盘 ↓ Terminal ↓ Shell ↓ 程序 ↓ Kernel ↓ 硬盘/内存 ↓ Shell ↓ Terminal ↓ 屏幕学习每一个命令其实都是这个流程。第3节 Terminal 是什么这是很多新手最大的误区。很多人认为黑窗口就是Shell其实不是。例如Windows里面你看到Windows Terminal它只是一个窗口程序。Linux里面例如GNOME Terminal也是一个窗口程序。它负责接收键盘输入显示文字复制粘贴滚动历史记录改变字体颜色但是它不会解释ls什么意思。解释命令的始终是Shell。所以Terminal更像一本空白的笔记本。Shell才是真正会思考的人。第4节 Terminal 和 Shell 的关系假设你和国外朋友聊天。你使用微信。微信负责输入文字 发送消息 显示消息但是微信不会翻译真正翻译的人是翻译软件。Linux也是一样。Terminal负责输入 显示Shell负责理解命令 执行命令所以关系应该是你 ↓ Terminal ↓ Shell ↓ Kernel ↓ 硬件第5节 Bash 是什么现在能解释为什么很多Linux教程。第一句话就是bashBash是什么它是一种Shell。Linux里面有很多Shell。例如bash zsh fish dash sh都属于Shell。只是功能不同风格不同。企业里面最常见的是bashMac现在默认zsh有些高级用户喜欢fish因为自动补全更智能界面更漂亮。所以以后别人说打开 Bash。真正意思就是打开 Bash 这个 Shell。第6节 Windows 为什么有 CMD 和 PowerShell很多人觉得Linux才有Shell。其实不是。Windows也有。例如最老的是CMD后来微软推出PowerShellPowerShell其实也是Shell。只是能力比CMD强很多。例如LinuxlsWindows CMDdir作用其实一样都是查看目录只是命令不同。第7节 Shell 不只是执行命令很多新手认为Shell只能输入ls其实不是。Shell本身还是一种编程语言。例如echo Hello输出Hello例如nameTom echo $name输出Tom以后你会学习Shell ScriptShell脚本。就是把很多命令写成一个程序自动执行。所以很多服务器维护其实都是Shell脚本完成的。第8节 PATH —— Shell 怎么知道命令在哪这里有一个非常重要的问题。假设你输入lsShell为什么知道去哪里找答案就是PATH环境变量。PATH可以理解成一张搜索目录清单。例如PATH里面记录了/usr/bin /bin /usr/local/bin当你输入lsShell就会先去/usr/bin找。没有。继续/bin找。找到/bin/ls于是执行它。所以真正执行的是/bin/ls只是PATH帮你省略了。以后安装很多软件其实就是把程序放进PATH里面这样任何地方都能直接运行。第9节 一个完整命令的生命周期现在我们终于可以完整解释为什么ls能够工作。整个过程① 你按键盘 ↓ ② Terminal显示文字 ↓ ③ 按Enter ↓ ④ Shell读取命令 ↓ ⑤ Shell通过PATH寻找程序 ↓ ⑥ 找到 /bin/ls ↓ ⑦ 执行ls程序 ↓ ⑧ ls向Kernel请求读取目录 ↓ ⑨ Kernel读取磁盘 ↓ ⑩ Kernel返回数据 ↓ ⑪ ls整理输出 ↓ ⑫ Terminal显示结果看到这里你应该已经发现一个看似简单的命令背后其实经过了十几个步骤。本章总结今天请记住七句话Terminal 是窗口它负责输入和显示。Shell 是命令解释器它负责理解和执行命令。Kernel 不认识ls、pwd等命令它只负责系统资源和系统调用。Bash、Zsh、Fish 都是不同的 Shell。Windows 的 CMD 和 PowerShell本质上也是 Shell。PATH 告诉 Shell 去哪里寻找可执行程序。每执行一个命令都经历Terminal → Shell → 程序 → Kernel → 硬件 → 返回结果这一完整流程。到这里你已经完成了 Linux 世界观的三块基石现在你已经理解了第1章操作系统是什么。第2章Kernel内核如何管理硬件。第3章Shell 和 Terminal 如何让人类与 Kernel 交流。这三个知识点构成了后面所有 Linux 学习的基础。下一章预告非常重要从下一章开始我们终于要进入真正的 Linux 世界。主题是Linux 的文件系统——为什么 Linux 没有 C 盘、D 盘这一章会彻底改变你对文件和目录的理解。学完后你不仅知道/home、/etc、/var是做什么的还会理解一句 Linux 圈最经典的话Everything is a file万物皆文件。这是 Linux 最独特、也是最优雅的设计思想之一。

相关新闻