惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Palo Alto Networks Blog
C
Cisco Blogs
The Hacker News
The Hacker News
T
Threatpost
S
Schneier on Security
K
Kaspersky official blog
Spread Privacy
Spread Privacy
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
爱范儿
爱范儿
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
V
V2EX
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
L
LangChain Blog
W
WeLiveSecurity
Cloudbric
Cloudbric

博客园 - 曦远Code

给热水器装上“电量显示”:用 Shelly Gen4 脚本实现零改装水量预测 StarBlog番外(5) 从1.6到1.10,基于Avalonia AOT 开发的 Publisher 半年进化之路 你的显卡能跑多少算子?用 55 个检查项,给 PyTorch GPU 环境做一次冒烟测试 ROCm on Windows 性能排查:RX 6650 XT 跑 PyTorch,为什么加速不明显? lighthouse-fw:一个管理腾讯云轻量服务器防火墙的终端工具 用本地大模型驱动中文输入法,我做了一个实验性的项目 Spark.NET:一个试图把 Django / Rails 式开发体验带回 .NET 世界的全栈 Web 框架。 Zed AI 白嫖免费模型,搭配 DeepSeek v4,玩转 Agent 编程技巧 当 CGO 遇见 Zig:一种更优雅的折腾方式,对比 GCC 后端 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf 后 Django 时代:SQLAlchemy 2.0、Tortoise 与 Piccolo 三大异步 ORM 选型指南 Python网络请求库,从 requests 到 httpx 浅谈次世代代码编辑器 Zed:Rust 原生性能、GPU 渲染 现代 Python 程序优雅处理日期时间的避坑指南 你的SSH密钥可能已经过期了 是谁 2026 年还在用 Sublime Text 写代码? 别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥 2026年的Linux桌面环境选择,哪些适合Debian服务器? 在 Windows 11 上使用 Hyper-V 虚拟机准备安装OpenClaw C# 扩展方法只会写 this 吗?C# 14 新语法直接把扩展方法玩出了花 经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台) Coolify: Vercel 的开源版私有化部署平替版 分享一些2026年有意思的现代化Django生态组件 实测 Django 6.0:模版片段、后台任务、CSP 安全,三大特性体验报告 当人人都能用 AI 写代码时,我为什么选择重回 Django? 打包ROCm环境的相关Wheel方便后续使用 从挖矿木马入侵到 Docker Rootless 加固,我的服务器安全复盘 AMD显卡也能畅玩AI画图!ROCm+ComfyUI部署全指南
什么年代了怎么还在用bash啊?现代化shell开箱体验: fish, nu, elvish
曦远Code · 2026-03-19 · via 博客园 - 曦远Code

前言

Linux 服务器一般默认 shell 都是 bash,不太智能,可以用现代化的 shell 来优化命令行的体验。

zsh 是个不错的选择,但默认也是很丑,需要搭配 Oh My Zsh 挺麻烦的,本文介绍现在比较新、开箱即用的 shell 安装和简单使用方法。

如果直接用 chsh 命令修改默认登录 Shell(Login Shell),一些依赖 Bash 特定环境变量(如 /etc/profile 里的设置)的系统脚本或自动化任务可能会因为找不到 Bash 环境而报错。

思路:在 Bash 里启动现代 Shell。

三大现代 Shell 哪家强?

这三者各具特色,可以根据口味选择:

🐟 Fish

(Friendly Interactive SHell) 最省心的“全能选手”

  • 特点:开箱即用。自带语法高亮、智能补全(基于你的历史记录和 Man 手册)、非常漂亮的颜色。
  • 评价最好上手。 如果你不想折腾配置,只想装上就变强,Fish 是首选。
  • 缺点:虽然从 4.0 开始重写了部分引擎,但它依然不是 POSIX 兼容的(例如 VAR=val cmd 这种写法在旧版 Fish 中不支持)。

🦀 Nushell

(Nu) 像 SQL 一样处理数据的“未来派”

  • 特点万物皆对象。在 Nu 里,ls 返回的不是一串文本,而是一个表格。你可以直接用 ls | where size > 10mb 这种语法。
  • 评价最极客、最好玩。 它不仅仅是 Shell,更像是一个现代化的数据处理工具。如果你经常处理 JSON、CSV 或大批量日志,它会让你爽到飞起。
  • 缺点:学习曲线较陡,有些传统命令的写法需要重新适应。

🧝 Elvish

程序员的“优雅语言”

  • 特点:它试图把 Shell 变成一种真正的、强大的编程语言。支持复杂的结构(Map、List),甚至有自己的包管理器。
  • 评价最稳健、逻辑最严密。 适合那些觉得 Bash 脚本语法很“阴间”并希望用现代编程思维写脚本的人。
  • 缺点:社区生态相对小一些。

Tips

Nushell 和 Elvish 都是跨平台的,意味着可以在 Windows、macOS、Linux 上获得一致的体验。Fish 的话我只在 Linux 上用过,没有研究其他系统是否能用。

Fish

安装 Fish

# Ubuntu/Debian
sudo apt update && sudo apt install fish -y

安装 Fisher (插件管理器)

这是目前最好用的工具,建议先装上它,在 fish 里执行以下命令:

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

配置启动逻辑

~/.bashrc 文件末尾添加以下逻辑:

# 检查是否是交互式会话,且目标 shell 存在
if [[ $- == *i* ]] && command -v fish >/dev/null 2>&1; then
    exec fish
fi
  • [[ $- == \*i\* ]]: 确保只在交互式命令行(你手动操作时)触发。如果是不带终端的脚本运行,它不会启动,避免弄断自动化流程。
  • exec: 这个词很关键。它会用新进程替换当前进程,这样当你退出 fish 时,连接会直接关闭,而不是退回到一个空白的 bash

推荐几个好玩的插件/主题

安装好 Fisher 后,可以直接运行命令安装这些提升体验的神器:

  1. Pure (简洁美观的主题) fisher install pure-fish/pure 这是一个非常干净、现代化的 Prompt 主题,显示效果极佳。
  2. Done (任务完成提醒) fisher install franciscolourenco/done 如果你运行了一个耗时很长的命令(比如编译、备份),当它结束时,即使你在看别的窗口,它也会发个通知提醒你。
  3. Bass (兼容 Bash 脚本) fisher install edc/bass 这个对你最重要! 因为 Fish 不兼容 Bash 语法,如果你需要运行 source /etc/profile 这种命令,在 Fish 里会报错。装了 Bass 后,你可以写成 bass source /etc/profile,它会帮你搞定兼容性。

小技巧

  • Web 界面配置:在 Fish 终端输入 fish_config。它会自动弹出一个浏览器网页,让你用鼠标点点就能修改配色方案和函数,非常直观。
  • 智能补全:Fish 的补全基于你的历史记录。当你输入一个命令的前几个字母,它会灰显显示建议,按 右方向键 (→)Ctrl + F 就能直接填入。

我全都要

Nushell (Nu)

数据处理的“降维打击”

Nushell 是目前社区讨论度最高、最硬核的现代 Shell。它的核心逻辑是:一切皆结构化数据

为什么它好玩?

在传统的 Shell 里,ls 输出的是一串字符串。如果你想过滤文件大小,你得用 grepawkcut 去苦哈哈地切分字符串。 在 Nushell 里,ls 输出的是一个内存中的表格

体验一下:

ls | where size > 10mb | sort-by type

它会像 SQL 一样直接过滤出大于 10MB 的文件并按类型排序,输出的还是整齐的表格。

处理 JSON/YAML 神器: 如果你有一个 config.json,在 Nu 里只需要:

open config.json | get database.port

它直接就把值取出来了,完全不需要安装 jq

安装

https://www.nushell.sh/book/installation.html

Nushell 是用 Rust 写的,非常快。可以直接下载二进制文件或者通过包管理器。

wget -qO- https://apt.fury.io/nushell/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/fury-nushell.gpg
echo "deb [signed-by=/etc/apt/keyrings/fury-nushell.gpg] https://apt.fury.io/nushell/ /" | sudo tee /etc/apt/sources.list.d/fury-nushell.list
sudo apt update
sudo apt install nushell

Elvish

程序员的“瑞士军刀”

Elvish (精灵语) 走的是极致稳健编程友好路线。它的作者是华裔开发者 Qi Xiao,设计哲学非常严谨。

为什么它好玩?

  • 不会崩的管道:在 Bash 里,管道传输的是字节流;在 Elvish 里,管道可以传输复杂的数据结构(列表、字典)。
  • 自带文件管理器:按 Ctrl+R 搜索历史记录的界面非常华丽;按 Ctrl+L 会进入一个类似 ranger 的浮动文件导航模式,直接在 Shell 里选文件。
  • 语法极度统一:它彻底抛弃了 Bash 那些零碎的语法(比如 [[[ 的区别),它的脚本写起来就像是在写一种现代编程语言。

安装

https://elv.sh/get/package-manager.html

sudo apt install elvish

配置启动逻辑

~/.bashrc 里做一个选择器

每次登录都会询问要用哪个 shell (要我说就是 fish 好了,开箱即用)

# 交互模式下询问你想进入哪个宇宙
if [[ $- == *i* ]]; then
    echo "Choose your shell: [1] Fish  [2] Nushell  [3] Elvish  [Any] Stay in Bash"
    read -n 1 -p "Select: " choice
    echo
    case $choice in
        1) exec fish ;;
        2) exec nu ;;
        3) exec elvish ;;
        *) echo "Welcome back to Bash." ;;
    esac
fi

微信公众号:「程序设计实验室」 专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。