Bash与Zsh与Fish:在Linux中你应该使用哪个Shell

命令行 shell 是与操作系统交互的重要工具,使用户能够高效地执行命令、自动化任务和运行脚本。

虽然有各种外壳选项可供选择,但BashZshFish作为最受欢迎的选择脱颖而出,每种都提供独特的功能,因此理解它们的差异对于选择适合您需求的正确选项至关重要。

在这篇文章中,我们将探讨每个外壳的关键特征、它们的优缺点,并引导您做出明智的决定。

1. Bash(流行的Bourne Again Shell)

Bash 是大多数 Linux 发行版和 macOS(直到 macOS Catalina)上的默认 shell,它是最古老和最广泛使用的命令行 shell 之一,开发于 1989 年。

Bash 与类Unix系统高度兼容,并且符合POSIX标准,这确保了用Bash编写的脚本是可移植的,可以在不同系统上顺利运行。

Bash 的特点:

  • 符合POSIX标准: Bash 遵循POSIX标准,使其成为编写可移植的 shell 脚本的理想选择,这些脚本可以在各种系统上运行。
  • 兼容性:Bash 兼容大多数类 Unix 系统,包括 Linux、macOS 和 BSD。
  • 广泛采用:由于其广泛使用,Bash 拥有一个庞大的社区和丰富的资源用于故障排除、技巧和教程。
  • 脚本能力:Bash 通常用于编写 shell 脚本,以自动化系统管理、文件操作和软件安装等任务。

Bash 的优点:

  • 成熟且稳定:Bash 已经存在超过 30 年,这意味着它是日常使用和脚本编写的成熟可靠选择。
  • 通用支持: Bash作为大多数Linux发行版和macOS的默认Shell,普遍受到支持并几乎在每个系统上预装。
  • 广泛的文档:Bash有着详尽的文档,学习和故障排除的资源非常丰富。

Bash 的缺点:

  • 有限的功能:虽然功能齐全,Bash 缺乏一些现代特性,而这些特性在 ZshFish 等外壳中是存在的,例如高级自动补全和内置语法高亮。
  • 手动定制: Bash缺乏许多预配置的功能来增强可用性,因此用户通常需要手动配置他们的 .bashrc 文件或安装第三方工具。

2. Zsh (Z Shell)

Zsh 是 Bourne shell (sh) 的扩展版本,首次发布于 1990 年,以其高级功能、可定制性和强大的插件生态系统而闻名。

Zsh 由于其现代功能和强大的扩展性而越来越受欢迎,这使得它成为希望对其 shell 环境有更大控制权的用户的理想选择。
Zsh 的特点:

  • 高级自动补全:Zsh提供智能自动补全,方便完成命令、选项和文件名。
  • 强大的自定义: Zsh允许通过诸如Oh My Zsh的框架进行广泛的自定义,提供主题、插件以及许多其他增强Shell外观和功能的工具。
  • 改进的模式匹配: Zsh支持高级文件模式匹配技术,如递归模式匹配(**)和扩展模式匹配,这可以使处理文件变得更加容易。
  • 拼写检查: Zsh 包含一个内置的拼写检查器,可以纠正命令和文件名中的小错误。

Zsh 的优点:

  • 可通过插件自定义:使用像Oh My Zsh这样的框架,用户可以轻松地为Zsh添加功能、主题和扩展。流行的插件包括Git集成、语法高亮和自动补全。
  • 改善用户体验:Zsh通过提供智能自动补全和视觉提示(如高亮语法)来增强用户体验,使在命令行中工作变得更加简单。
  • 与Bash的兼容性:Zsh在很大程度上与Bash脚本兼容,因此用户可以在Zsh中运行大多数Bash脚本而无需修改。

Zsh 的缺点:

  • 学习曲线:虽然 Zsh 提供了许多功能,但由于其广泛的选项和可定制性,对于新用户来说可能会感到不知所措。
  • 不符合 POSIX: 尽管 Zsh 类似于 Bash,但它并不完全符合 POSIX,可能会在运行某些依赖 POSIX 标准的 Bash 脚本时导致兼容性问题。

3. Fish (友好的交互式外壳)

Fish 是一个现代化的 shell,旨在提供出色的用户体验,并开箱即用地提供高级功能。它首次发布于 2005 年,强调简单性、易用性和交互性。

Fish 不符合 POSIX 标准,而 Bash 符合,并且 Zsh 大部分与 Bash 兼容,但并不完全遵循 POSIX 标准。

Fish的特征:

  • 语法高亮:Fish提供实时语法高亮,这帮助用户通过视觉上区分命令、参数和变量来避免错误。
  • 自动建议:Fish 根据您的命令历史和上下文自动建议命令,使您能够通过一次击键快速选择先前的命令。
  • 简单配置: Fish自带一个基于网页的配置工具,使用户无需手动编辑配置文件即可轻松自定义他们的shell。
  • 用户友好的界面: Fish强调用户友好性,提供简单、直观的功能,几乎不需要设置。

Fish的优点:

  • 开箱即用体验: Fish 在安装后立即有效,具有语法高亮和自动建议,这些功能是内置的,随时可用。
  • 现代特性: Fish包括许多被认为是现代外壳的特性,例如自动建议、语法高亮和用户友好的提示,这一切都不需要插件或额外的配置。
  • 简单语法:Fish 的语法设计得更容易阅读和理解,使新用户更易于接触,而这些用户可能对其他 shell 的复杂性不太熟悉。

Fish的缺点:

  • 非POSIX兼容: 与BashZsh不同,Fish不符合POSIX标准,这意味着为Bash或其他POSIX兼容的shell编写的脚本在Fish中可能无法正确运行,除非进行修改。
  • 兼容性有限:因为 Fish 是一个较新的 Shell,它的社区和资源比 Bash 和 Zsh 少。虽然它的受欢迎程度正在上升,但在某些环境或特定任务中,它可能没有得到广泛支持。

比较:Bash vs Zsh vs Fish

特征BashZshFish
易用性适度适度
定制化通过配置文件手动操作广泛(通过像 Oh My Zsh 这样的框架)有限但用户友好
插件支持有限的广泛的可用
Auto-Completion基本的高级实时建议
语法高亮需要设置内置的内置
脚本编写符合POSIX标准大多数与 Bash 兼容不符合POSIX标准
社区支持广泛的大而活跃更小但在增长

您应该选择哪个壳?

  • 如果您需要一个稳定、可靠且可移植的 shell,适用于所有类 Unix 系统,请选择 Bash
  • 选择 Zsh 如果您想要一个高度可定制的终端,具有改进的自动补全、插件支持和主题等高级功能。
  • 选择 Fish 如果你喜欢一个直观、用户友好的外壳,它开箱即用,并且具有现代功能,如语法高亮和自动建议。
结论

BashZshFish各有其优缺点,具体取决于您的需求和专业水平。

Bash 是一个可靠、经过时间考验的选项,优先考虑可移植性,而 Zsh 为需要更定制化 shell 环境的用户提供先进的功能和定制选项。另一方面,Fish 是以用户友好为设计理念,提供现代化和直观的体验。

🔥运维干货分享

  • 系统规划与管理师备考经验分享

  • 软考高级系统架构设计师备考学习资料

  • 软考中级数据库系统工程师学习资料

  • 软考高级网络规划设计师备考学习资料

  • Kubernetes CKA认证学习资料分享

  • AI大模型学习资料合集

  • 免费文档翻译工具(支持word、pdf、ppt、excel)

  • PuTTY中文版安装包

  • MobaXterm中文版安装包

  • pinginfoview网络诊断工具中文版

  • Xshell、Xsftp、Xmanager中文版安装包

  • 办公室摸鱼神器,伪装电脑系统更新中

  • Typora简单易用的Markdown编辑器

  • Window进程监控工具,能自动重启进程和卡死检测

  • 毕业设计高质量毕业答辩 PPT 模板分享

  • IT行业工程师面试简历模板分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88068.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Peek-Ubuntu上Gif录制工具-24.04LTS可装

安装方法(Ubuntu24.04.2LTS测试通过) sudo apt update sudo apt install peek纯无语,🧟 一个软件,仨网站,四份重复的教程: 添加 PPA更新源报错(不支持 noble)搜到 4 篇教…

DVWA靶场通关笔记-验证码绕过reCAPTCHA(High级别)

目录 一、reCAPTCHA 二、代码审计(High级别) 1、渗透准备 (1)配置security为High级别。 (2)配置RECAPTCHA参数 (3)再次打开靶场 2、源码分析 (1)inde…

【Java安全】RMI基础

文章目录介绍实现服务端 Server客户端 Client通信过程数据端与注册中心(1099 端口)建立通讯客户端与服务端建立 TCP 通讯客户端序列化传输 调用函数的输入参数至服务端总结介绍 RMI 全称 Remote Method Invocation(远程方法调用),即在一个 J…

MySQL索引面试问题梳理

本文系统剖析MySQL索引的核心机制: ‌索引分类全景图‌:详解聚簇/非聚簇索引的逻辑差异与物理存储特点‌B树的统治性优势‌:通过对比Hash/B树揭示InnoDB的底层选择逻辑 一、索引分类的常见困惑解析 1. 按物理存储分类 类型 存储内容 数量限…

SSH密钥 与 Ed25519密钥 是什么关系

SSH 密钥与 Ed25519 密钥的关系可以从技术实现和应用场景两个角度理解。简而言之:Ed25519 密钥是 SSH 密钥的一种类型,用于在 SSH 协议中实现安全认证。以下是详细解释: 1. SSH 密钥的通用概念 SSH(Secure Shell)是一…

【PyTorch 当前版本不支持 NVIDIA GeForce RTX 5060 Ti处理办法】

报错信息 X:\Stable-Diffusion-WebUI\system\python\lib\site-packages\torch\cuda\__init__.py:215: UserWarning: NVIDIA GeForce RTX 5060 Ti with CUDA capability sm_120 is not compatible with the current PyTorch installation. The current PyTorch install supports…

Docker部署PaddleX实现PaddleOcr

Docker部署PaddleX实现PaddleOcr 一、版本说明二、安装PaddleX三、基础服务化部署四、接口调用实现表格识别五、调参优化一、版本说明 PaddleX 3.0Ubuntu20.04.1Docker version 26.1.3, build 26.1.3-0ubuntu1~20.04.1二、安装PaddleX 查看服务器信息 docker安装PaddleX 根据 …

深入学习c++之---AVL树

VL树简介​ AVL树是一种自平衡二叉搜索树,通过平衡因子(Balance Factor, BF)​和旋转操作,确保树始终保持平衡,避免退化成链表,从而保证查找、插入、删除的时间复杂度稳定在 ​O(log n)​。 ​核心特点​…

【PTA数据结构 | C语言版】输出 1 ~ n

本专栏持续输出数据结构题目集,欢迎订阅。 文章目录题目代码题目 给定正整数 n,输出 1 ~ n,每个数字占一行。 本题旨在测试不同的算法在各种数据情况下的表现。各组测试数据特点如下: 数据 0:测试基本正确性&#x…

如何禁止用户复制页面内容?

某些特定的业务场景下,我们可能会有禁止用户复制页面内容的需求。比如: 付费内容保护:在线小说、付费课程等,希望防止内容被轻易拷贝和传播。试卷或答题系统:防止考生将题目复制出去寻求场外帮助。敏感信息展示&#x…

React + PDF.js 预览 PDF 文件:从基础实现到高级优化的完整指南

关键点 PDF.js:Mozilla 开发的开源 JavaScript 库,用于在浏览器中渲染 PDF 文件。React 集成:结合 React 组件化特性,实现高效、交互式的 PDF 预览功能。功能实现:支持 PDF 文件加载、页面导航、缩放、搜索、书签和注…

新能源汽车BMS电感产品应用及选型推荐

在新能源电动汽车中,BMS(电池管理系统)如同一个守护者,默默守护电池的安全与性能。它精准监控电压、电流、温度,防止过充过放,并通过智能均衡技术提升续航能力。电感在BMS系统的电源转换、滤波和隔离通信等…

【机器学习笔记 Ⅱ】12随机森林

随机森林(Random Forest)详解 随机森林是一种基于集成学习(Ensemble Learning)的高性能分类/回归算法,通过构建多棵决策树并综合其预测结果,显著提升模型的准确性和鲁棒性。其核心思想是“集体智慧优于个体…

问题 1:MyBatis-plus-3.5.9 的分页功能修复

问题 1:MyBatis-plus-3.5.9 的分页功能修复 使用 Sw‏agger 接口文档‎依次对上述接口进行测 试,发现 listU⁡serVOByPage 接口有一些问题! 分页好像没有生效,还是查出了全部数据: 由于我们用的是 MyBatis Plus 来操…

Qt 如何提供在线帮助

Qt 如何提供在线帮助一、概述二、工具提示、状态提示和"Whats This?"帮助1、工具提示(Tool Tips)添加工具提示到控件富文本工具提示全局工具提示设置延迟显示控制自定义工具提示窗口禁用工具提示工具提示与状态栏联动特点:2、状态提示(Status Tips)3、&q…

Typecho站点关闭插件开发全指南:从原理到实现

文章目录 开发Typecho站点关闭插件:从原理到实现一、背景与需求分析二、插件设计思路2.1 技术选型2.2 功能模块设计三、插件开发实现3.1 插件基础结构3.2 插件主文件实现3.3 核心功能实现3.4 后台管理界面3.5 关闭页面模板四、插件配置完善4.1 配置表单实现4.2 定时任务处理五…

详细解析 .NET 依赖注入的三种生命周期模式

文章目录一、Transient(瞬时生命周期)原理使用方式核心特性适用场景优势劣势二、Scoped(作用域生命周期)原理使用方式核心特性适用场景优势劣势三、Singleton(单例生命周期)原理使用方式核心特性适用场景优…

软件工程经济与伦理

前言 各位帅哥美女,能看到这篇博客的都有口福了,学习这门课程就像遨游在大份的海洋,一不小心就吃上一口。能看到这篇博客说明我们是有缘人可以点赞收藏一下,这篇博客可以在你无比饥饿的时候给你送上一坨!(香…

AI 体验走查 - 火山引擎存储的 AI UX 探索之路

01 概述 火山引擎存储技术团队驱动 AI 自主完成用户体验走查 / 可用性测试的执行与评价,帮助业务改善交互体验。 立项“故事走查”的背景诉求和 AI 机遇 如何搭建“AI 评价”能力,精准识别交互问题 让交互体验故事走查变为技术产品,讲解系…

【世纪龙科技】汽车零部件检验虚拟实训室-助力汽车职教实训

在汽车产业加速向电动化、智能化转型的背景下,职业院校汽车专业教学面临新的挑战:传统实训受限于设备数量不足、操作风险高、标准化程度低等问题,导致学生实践机会有限,技能掌握不扎实。如何让学生在有限资源下高效掌握零部件检验…