Ubuntu零基础入门到精通【6.2讲】:Bash、Zsh、Fish 的区别——你的 Shell 选择指南!
🏆 本文收录于 《滚雪球学 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 为什么默认使用

相关新闻

C# WinForm集成YOLOv8实例分割:从模型导出到实时检测的完整实践

C# WinForm集成YOLOv8实例分割:从模型导出到实时检测的完整实践

简介:本资源是一套基于C# WinForm平台实现YOLOv8实例分割模型ONNX部署的完整工程源码,面向具备基础C#开发能力与计算机视觉入门知识的开发者,解决在Windows桌面端快速集成轻量级实例分割能力的实际需求,适用于工业质检、智能标注工…

2026/11/2 23:50:41 阅读更多 →
小米手机Bootloader解锁原理、风险与高版本系统实践指南

小米手机Bootloader解锁原理、风险与高版本系统实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 13:15:05 阅读更多 →
PyTorch实现U-Net图像分割:从原理到实战的完整指南

PyTorch实现U-Net图像分割:从原理到实战的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 10:11:41 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻