Ubuntu零基础入门到精通【6.2讲】:Bash、Zsh、Fish 的区别——你的 Shell 选择指南! 📅 发布时间:2026/9/3 16:23:59 👁 浏览次数: 🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。🎯适合人群:Linux 初学者、Ubuntu 新手、计算机专业学生、后端 / 运维 / 测试入门同学、想搭建 Linux 开发环境的开发者、准备学习服务器部署的同学,以及想从 Windows 过渡到 Ubuntu 工作流的用户。从“会打开终端”到“能管理系统”,从“复制命令”到“理解 Linux 思维”,这一次,我们不零散学,而是一路滚雪球!🎉限时福利:当前专栏活动中,一次订阅,终身阅读,后续更新章节全部免费解锁👉 立即查看👈️演示环境说明:开发工具:Visual Studio Code / JetBrains 系列 IDE / Vim / NanoUbuntu版本:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS,推荐 Ubuntu 24.04 LTSLinux内核版本:Linux Kernel 6.x 或更高终端环境:Bash / Zsh包管理工具:APT / Snap / Flatpak远程连接工具:OpenSSH / Windows Terminal / MobaXterm / Termius虚拟化环境:VMware Workstation / VirtualBox / WSL2 / 云服务器容器环境:Docker / Docker Compose操作系统:Ubuntu Desktop / Ubuntu Server全文目录:一、前言:你打开终端,然后呢?二、本文要解决什么问题?三、Shell 是什么?为什么有这么多种?3.1 从命令到执行:Shell 在哪里?3.2 Shell 的名字从哪里来?3.3 在 Ubuntu 中,Shell 在哪里?四、Bash:Ubuntu 的默认 Shell,你必须先了解它4.1 Bash 是什么4.2 Bash 的核心特性4.3 Bash 的提示符解析4.4 Bash 的配置文件体系4.5 Bash 的局限性五、Zsh:功能强大的进化版 Shell5.1 Zsh 的设计哲学5.2 Zsh 的核心特性5.3 Oh My Zsh:Zsh 的配置框架5.4 Zsh 的配置文件5.5 Zsh 的局限性六、Fish:开箱即用的现代 Shell6.1 Fish 的设计哲学6.2 Fish 的核心特性6.3 Fish 的语法:和 Bash 有什么不同6.4 Fish 的配置文件6.5 Fisher 和 fish 插件生态6.6 Fish 的局限性七、三者的核心对比7.1 全面对比表7.2 适用场景推荐7.3 我的个人使用方案八、实验环境准备8.1 确认系统版本8.2 确认当前 Shell8.3 更新系统软件源九、案例一:在 Ubuntu 中认识你当前的 Shell9.1 案例目标9.2 第一步:认识你的 Shell 环境9.3 第二步:探索 Bash 配置文件9.4 第三步:给 Bash 添加自定义配置9.5 命令解析9.6 初学者常见错误十、案例二:安装并体验 Zsh + Oh My Zsh10.1 案例目标10.2 第一步:安装 Zsh10.3 第二步:临时启动 Zsh 体验10.4 第三步:安装 Oh My Zsh10.5 第四步:安装必备插件10.6 第五步:配置主题10.7 第六步:配置实用的 Zsh 选项10.8 命令解析10.9 Oh My Zsh 插件推荐十一、案例三:安装 Fish 并感受它的独特之处11.1 案例目标11.2 第一步:安装 Fish11.3 第二步:临时体验 Fish11.4 第三步:了解 Fish 的配置文件11.5 第四步:Fish 的函数系统11.6 第五步:安装 Fisher 和插件(可选)11.7 案例后的脚本兼容性验证11.8 命令解析十二、Shell 配置文件详解12.1 三种 Shell 的配置文件对比12.2 环境变量应该放在哪里12.3 各 Shell 配置文件加载顺序十三、Shell 切换、默认 Shell 修改与注意事项13.1 临时切换 Shell13.2 永久修改默认 Shell13.3 修改 root 用户的 Shell13.4 修改特定用户的 Shell(系统管理场景)13.5 如果改错了怎么恢复十四、服务器环境中的 Shell 选择建议14.1 为什么服务器上坚持使用 Bash14.2 服务器上的 Bash 增强14.3 Ubuntu Server 上安全地管理多用户 Shell十五、脚本兼容性问题:Bash 写的脚本在 Zsh/Fish 里能跑吗?15.1 关于 Shebang 行15.2 Bash 脚本中的常见坑(对 Zsh 用户)15.3 Fish 脚本的正确写法十六、常见问题与踩坑总结Q1:我应该用 Bash、Zsh 还是 Fish?Q2:切换了默认 Shell 之后,为什么有些命令突然找不到了?Q3:Oh My Zsh 安装后终端变慢了,怎么办?Q4:Fish 的语法和 Bash 差异太大,我该怎么过渡?Q5:我在服务器上用 Zsh/Fish,会影响 cron 任务吗?Q6:Zsh 里的 `~` 扩展和 Bash 里不一样?Q7:我在 `.zshrc` 里加了配置,但 SSH 登录后不生效?Q8:为什么修改了 Fish 的配置后,新开的终端不生效?Q9:`chsh` 改了默认 Shell 后,当前终端没有变化?Q10:怎么判断一个脚本是用什么 Shell 语法写的?Q11:我把 `/bin/sh` 和 `/bin/bash` 搞混了,有什么区别?Q12:我装了很多 Shell,怎么切换回 Bash?Q13:`PS1` 改坏了,提示符显示不正常怎么恢复?Q14:Oh My Zsh 能卸载吗?Q15:我同时用 Zsh 和 Fish,两边的配置要维护两份,太麻烦了?十七、最佳实践建议17.1 Shell 选择与迁移的最佳实践17.2 Bash 配置的最佳实践17.3 Zsh 配置的最佳实践17.4 Fish 使用的最佳实践17.5 脚本开发的最佳实践十八、扩展知识点:Shell 背后的 Linux 世界18.1 Shell 与进程:fork/exec 模型18.2 Shell 内置命令 vs 外部命令18.3 环境变量和 Shell 变量的区别18.4 Shell 的工作机制:解析到执行十九、完整操作流程回顾19.1 从零开始认识和配置 Shell 的完整流程19.2 三种 Shell 安装命令汇总二十、总结与下一步学习建议20.1 本篇文章核心总结20.2 你学到了什么20.3 一个建议:先别急着换 Shell20.4 下一节预告🧧 学习福利 · 限时开放 🧧🫵 Who am I?一、前言:你打开终端,然后呢?我第一次认真接触 Linux 是在大学的一台二手笔记本电脑上,装的是 Ubuntu 16.04。打开终端的时候,我看到一个闪烁的光标,完全不知道该输入什么。那时候我对"终端"的全部理解,就是"一个黑框框,可以输命令"。后来开始慢慢用,才发现这个"黑框框"背后藏着一个叫Shell的东西。然后某一天,同事告诉我他用的是 Zsh,另一个朋友跟我说 Fish 才是最好用的,还有人说服务器只认 Bash。我当时完全搞不清楚这些东西有什么关系,也不知道自己该用哪个。相信很多刚入门 Ubuntu 的读者都有类似的困惑。你打开终端,看到命令提示符,开始敲命令——但你并不知道,这些命令是谁在解析、谁在执行。你甚至不知道,你现在用的这个东西叫什么名字。这篇文章就从这里开始讲。我们不仅要搞清楚 Bash、Zsh、Fish 分别是什么,更要搞清楚它们各自的定位、适用场景、配置方式、以及在 Ubuntu 实际使用中你该怎么选择。这不是一篇简单的"三者对比表格"文章。我希望读完之后,你能真正理解 Shell 在整个 Linux 系统中的位置,以及为什么这个选择对于一个 Ubuntu 用户来说比它看起来的重要得多。二、本文要解决什么问题?在进入正文之前,我先把这篇文章想回答的核心问题列出来,方便你按需阅读:Shell 是什么?它在 Ubuntu 中扮演什么角色?Bash、Zsh、Fish 分别是什么,有什么区别?Ubuntu 为什么默认使用