[#]: subject: "Beyond Bash: 9 Lesser-Known Linux Shells and Their Capabilities" [#]: via: "https://itsfoss.com/shells-linux/" [#]: author: "Sreenath https://itsfoss.com/author/sreenath/" [#]: collector: "lkxed" [#]: translator: "ChatGPT" [#]: reviewer: "wxy" [#]: publisher: "wxy" [#]: url: "https://linux.cn/article-15870-1.html" 超越 Bash: 9 个不太知名的 Linux Shell 及其功能 ====== ![][0] > 你可能已经知道像 Bash 和 Zsh 这样的流行 Shell。让我们来探索一些有趣和独特的 Shell。 Shell 通过解释命令为 Linux 和类 Unix 系统提供了一个接口,充当用户与操作系统的核心工作之间的中介。 毫无疑问,**Bash Shell 是最受欢迎的 Shell** 之一,但有些用户喜欢其他 Shell,比如在 macOS 上的默认 Shell——ZSH。但是除了这些流行的 Shell 之外,还存在许多 Shell,具有不同的功能和用途。 在本文中,我们将介绍一些被积极维护并提供不同用户体验的不太常见的 Shell。 ### 1、Fish Shell 谈到除了 Bash、Zsh 之外的 Shell,第一个想到的就是 Fish Shell。 Fish 是一个智能的、用户友好的命令行 Shell,主要适用于类 Unix 操作系统。 ![Fish Shell][1] Fish Shell 的特点: - 根据历史记录提供命令自动建议和补全。 - 支持 24 位真彩。 - 支持语法高亮,所有特性都可以开箱即用。 安装 Fish: Fish 可在几乎所有 Linux 发行版的官方仓库中获得。在 Ubuntu 中,你可以通过以下命令来安装: ``` sudo apt install fish ``` Ubuntu 仓库中的版本有点旧。如果你想安装最新版本,可以使用该团队提供的官方 PPA。 ``` sudo apt-add-repository ppa:fish-shell/release-3 sudo apt update sudo apt install fish ``` > **[Fish Shell][2]** ### 2、Nushell Nushell(Nu)是一种新型的 Shell,可以在 Linux、macOS、Windows、BSD 等系统上使用。它的哲学和灵感来自于类似于 [PowerShell][3]、函数式编程语言和现代 [CLI][4] 工具等项目。 ![Nushell][5] Nushell 的特点: - 一切皆数据:Nu 管道使用结构化数据,因此你每次都可以使用同样的方式安全地选择、过滤和排序。 - 强大的插件:可以使用强大的插件系统轻松扩展 Nu。 - 易读的错误消息:Nu 操作的是类型化的数据,因此它能够检测其他 Shell 无法检测到的错误。当出现问题时,Nu 会准确指出问题所在和原因。 - 干净的 IDE 支持。 安装 Nushell: 如果你使用的是 Ubuntu,是无法找到一个 Apt 存储库来安装 Nushell 的。但是,根据其在 [GitHub 上的说明][6],你可以通过安装所需的依赖项来构建它。 幸运的是,还有一种方法可以使用 Homebrew 在任何发行版上安装它。你可以参考我们的教程 [在 Linux 上安装并使用 Homebrew 软件包管理器][7],成功在 Linux 上安装后,你需要输入以下命令来安装 Nushell: ``` brew install nushell ``` 请访问其官方网站以查看更多安装方式。 > **[Nushell][8]** ### 3、Dune 该项目的创建者将 **Dune** 描述为海滩上的一个 “贝壳”。Dune 是一个快速、实用且美观的 Shell,提供了一些特殊的元编程功能,比如引用。 ![Dune Shell][9] Dune Shell 的特点: - 在进入交互模式之前,Dune 执行存储在主目录中的“预载”启动文件。 - Dune 的 REPL 是完全可定制的。 - 可以通过将变量分配给程序名称来定义别名。 - 使用宏来编写修改 Shell 环境的函数,就像命令或程序一样。 - Dune 提供了丰富的标准库,并提供漂亮的界面来查看每个模块中可用的所有函数。 安装 Dune Shell: Dune shell 可在 Arch Linux 存储库中以 `dunesh` 的名字获得。 对于其他用户,Dune shell 可以通过 `cargo` 安装。所以,首先需要 [安装最新版本的 Rust][2]。如果已经安装了 Rust,请确保你有最新的版本,然后继续安装 Dune。 ``` cargo install -f dune ``` 安装完成后,可以通过输入以下命令访问 Shell: ``` dunesh ``` > **[Dune Shell][11]** ### 4、Xonsh Xonsh 是一个用 Python 编写的,跨平台 Shell 和命令提示符。它结合了 Python 和 Bash Shell,用户可以直接在 Shell 中运行 Python 命令。甚至可以结合使用 Python 和 Shell 命令。 ![Xonsh shell][12] 如果你想了解更多,请阅读我们的 Xonsh 文章: > **[Xonsh Shell:结合 Bash Shell 和 Python 最佳特点的 Shell][12a]** Xonsh Shell 的特点: - Xonsh 语言具有 Bash 中常用的 Shell 原语。 - 在 Python 中准备环境变量和参数,然后在 Shell 命令中使用它们。 - 第三方扩展系统 Xontribs。 - 可自定义的标签补全、键绑定、颜色样式。 - 丰富的界面,方便查看历史记录。 安装 Xonsh Shell: Xonsh 可在许多 Linux 发行版的仓库中获得,如 Ubuntu、Fedora 等。因此,要在 Ubuntu 上安装它,请运行: ``` sudo apt install xonsh ``` Xonsh 还提供了一个 AppImage 包,可以从它们的下载页面下载。如果你不熟悉这种文件格式,请参考我们的 [AppImage 指南][13]。 > **[Xonsh][14]** ### 5、Hilbish Hilbish 是一个可扩展 Shell,可通过 Lua 编程语言进行定制。该 Shell 面向普通用户和高级用户。 ![Hilbish shell][15] Hilbish 的特点: - 简单易用的脚本编写。 - 历史和补全菜单:为用户提供正确的补全和历史搜索菜单。 - 通过 Lua API 可以进行语法高亮和提示。 - 它可以在 Unix 系统和 Windows 上运行,但在 Windows 上可能会遇到问题。 安装 Hilbish: Hilbish 在 Ubuntu 的包仓库中不可用。因此,需要从源代码构建安装。 要安装它,需要安装 **Go** 和 **task**。 ``` sudo apt install golang-go sudo snap install task --classic ``` 安装完依赖项后,运行以下命令来安装 Hilbish shell: ``` git clone --recursive https://github.com/Rosettea/Hilbish cd Hilbish go get -d ./... ``` 如果要使用稳定版,请运行以下命令: ``` git checkout $(git describe --tags `git rev-list --tags --max-count=1`) task build sudo task install ``` > **[Hilbish][16]** ### 6、Elvish Elvish 是一种丰富的编程语言和多功能交互式 Shell。它可以在 Linux、Mac 和 Windows 上运行。即使版本 v1.0 尚未发布,它已经适合大多数日常交互使用。 ![Elvish shell][17] Elvish 的特点: - 强大的管道:Elvish 中的管道可以携带结构化数据,而不仅仅是文本。你可以通过管道传输列表、映射甚至函数。 - 直观的控制结构。 - 目录历史:Elvish 记住了你访问过的所有目录。你可以通过按 `CTRL+L` 访问它。 - 命令历史。 - 内置文件管理器:通过按 `CTRL + N` 访问。 安装 Elvish: Elvish Shell 可在 Ubuntu 和 Arch Linux 的包管理器中获得。因此,要安装它,请打开终端并键入: ``` sudo apt install elvish ``` 或者 ``` sudo pacman -S elvish ``` 要了解有关 Elvish 的更多信息,请访问 Elvish 的官方网站。 > **[Elvish][18]** ### 7、Oh 据其开发者称,Oh 是 Unix shell 的重新设计。 它旨在成为现代 Shell 的更强大、更稳健的替代品,同时尊重 Unix shell 在过去半个世纪中建立的惯例。 ![][19] Oh Shell 的特点: - 一流的频道、管道、环境和函数。 - 适用于标准 Shell 构造的丰富返回值。 - 支持模块化。 - 简化的评估和引用规则。 - 语法尽可能少地偏离已有的惯例。 安装 Oh: Oh 提供了一个预编译的二进制文件。你需要从它们的 [官方 GitHub 页面][20] 下载它。 你需要使用以下命令为文件授予执行权限: ``` chmod +x oh ``` 运行以下命令以在你的系统上安装它: ``` sudo mv oh /usr/local/bin/ ``` 现在,你可以通过以下命令启动 Oh: ``` oh ``` 要了解有关 Oh 的详细信息,请查阅其文档。 > **[Oh][21]** ### 8、Solidity Solidity 是一个带有轻量级会话记录和远程编译器支持的交互式 Shell。当你更改指示/语言时,它会自动获取匹配的远程编译器。 ![][22] Solidity 的特点: - `pragma solidity ` 会尝试动态加载所选的编译器版本。 - 可以使用 `.session` 命令保存和恢复会话。 - 设置在退出时保存(在运行并发 shell 时不安全)。 - `$_` 是上一个已知结果的占位符。 - 特殊命令是具有点前缀。其他所有都将被视为 Solidity 代码进行评估。 安装 Solidity: 你可以通过 `npm` 安装 Solidity shell。 [确保你安装了最新版本的 nodejs][23] 和 `npm`,然后输入以下命令: ``` npm install -g solidity-shell ``` 安装完成后,运行 `solidity-shell` 来开始会话。 > **[Solidity Shell][24]** ### 9、Yash Yash(Yet another shell)是一个遵循 POSIX 标准的命令行 Shell,使用 C99(ISO/IEC 9899:1999)编写。它具有适用于日常交互和脚本使用的功能。 ![][25] Yash Shell 的特点: - 全局别名。 - 套接字重定向、管道重定向和进程重定向。 - 提示符命令和未找到命令的处理程序。 - 带有预定义补全脚本的命令行补全,覆盖了 100 多个命令。 - 基于命令历史记录的命令行预测。 安装 Yash Shell: 要安装该 Shell,你需要转到它们的 [GitHub 发布][26] 页面下载 tar 文件。解压 tar 文件;在其中,你将找到一个包含安装说明的 `INSTALL` 文件。 通常,你应该在提取的文件夹中执行以下命令: ``` ./configure make sudo make install ``` 要了解有关 Yash Shell 的详细信息,请查看其手册页面。 > **[Yash][27]** ### 顺便提及 - Ion:[Ion Shell][28] 是用 Rust 编写的一种现代系统 Shell,主要用于 RedoxOS。它仍然是一个正在开发中的工作,用户应该对语法会变化有所预料。 - Closh:[Closh][29] 是一种类似 Bash 的 Shell,将传统的 UNIX Shell 与 [Clojure][30] 的强大功能相结合。它旨在成为 Bash 的现代替代品。它也是在开发的早期阶段。 - Dash:[Dash][31] 是来自 Debian 的符合 POSIX 标准、快速轻量级的 Shell。 💬 你对这些列出的 Shell 有何看法?你是否会尝试将默认 Shell 更改为这里的某些选项?你最喜欢的是哪一个?在下面的评论框中分享你的想法。 *(题图:MJ/a84a1625-4dd1-4589-aabb-ce3f37090f32)* -------------------------------------------------------------------------------- via: https://itsfoss.com/shells-linux/ 作者:[Sreenath][a] 选题:[lkxed][b] 译者:ChatGPT 校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://itsfoss.com/author/sreenath/ [b]: https://github.com/lkxed [1]: https://itsfoss.com/content/images/2023/01/fish-shell.png [2]: https://fishshell.com/ [3]: https://itsfoss.com/microsoft-open-sources-powershell/ [4]: https://itsfoss.com/gui-cli-tui/ [5]: https://itsfoss.com/content/images/2023/01/nushell.png [6]: https://github.com/nushell/nushell [7]: https://itsfoss.com/homebrew-linux/ [8]: https://www.nushell.sh/ [9]: https://itsfoss.com/content/images/2023/01/dunesh.png [10]: https://itsfoss.com/install-rust-cargo-ubuntu-linux/ [11]: https://github.com/adam-mcdaniel/dune [12]: https://itsfoss.com/content/images/2023/01/xonsh.png [12a]: https://itsfoss.com/xonsh-shell/ [13]: https://itsfoss.com/use-appimage-linux/ [14]: https://xon.sh/ [15]: https://itsfoss.com/content/images/2023/01/hilbish.png [16]: https://rosettea.github.io/Hilbish/ [17]: https://itsfoss.com/content/images/2023/01/elvish.png [18]: https://elv.sh/ [19]: https://itsfoss.com/content/images/2023/01/oh_Shell.png [20]: https://github.com/michaelmacinnis/oh#linux [21]: https://github.com/michaelmacinnis/oh [22]: https://itsfoss.com/content/images/2023/01/solidity-shell.png [23]: https://itsfoss.com/install-nodejs-ubuntu/ [24]: https://github.com/tintinweb/solidity-shell [25]: https://itsfoss.com/content/images/2023/01/yash.png [26]: https://github.com/magicant/yash/releases/tag/2.53 [27]: https://yash.osdn.jp/index.html.en [28]: https://gitlab.redox-os.org/redox-os/ion [29]: https://github.com/dundalek/closh [30]: https://clojure.org/ [31]: https://linuxhandbook.com/dash-shell/ [0]: https://img.linux.net.cn/data/attachment/album/202306/02/175710r3c8shssf5qss2tf.jpg