


























Linux 服务器一般默认 shell 都是 bash,不太智能,可以用现代化的 shell 来优化命令行的体验。
zsh 是个不错的选择,但默认也是很丑,需要搭配 Oh My Zsh 挺麻烦的,本文介绍现在比较新、开箱即用的 shell 安装和简单使用方法。
如果直接用 chsh 命令修改默认登录 Shell(Login Shell),一些依赖 Bash 特定环境变量(如 /etc/profile 里的设置)的系统脚本或自动化任务可能会因为找不到 Bash 环境而报错。
思路:在 Bash 里启动现代 Shell。
这三者各具特色,可以根据口味选择:
(Friendly Interactive SHell) 最省心的“全能选手”
VAR=val cmd 这种写法在旧版 Fish 中不支持)。(Nu) 像 SQL 一样处理数据的“未来派”
ls 返回的不是一串文本,而是一个表格。你可以直接用 ls | where size > 10mb 这种语法。程序员的“优雅语言”
Nushell 和 Elvish 都是跨平台的,意味着可以在 Windows、macOS、Linux 上获得一致的体验。Fish 的话我只在 Linux 上用过,没有研究其他系统是否能用。
# Ubuntu/Debian
sudo apt update && sudo apt install fish -y
这是目前最好用的工具,建议先装上它,在 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 后,可以直接运行命令安装这些提升体验的神器:
fisher install pure-fish/pure 这是一个非常干净、现代化的 Prompt 主题,显示效果极佳。fisher install franciscolourenco/done 如果你运行了一个耗时很长的命令(比如编译、备份),当它结束时,即使你在看别的窗口,它也会发个通知提醒你。fisher install edc/bass 这个对你最重要! 因为 Fish 不兼容 Bash 语法,如果你需要运行 source /etc/profile 这种命令,在 Fish 里会报错。装了 Bass 后,你可以写成 bass source /etc/profile,它会帮你搞定兼容性。fish_config。它会自动弹出一个浏览器网页,让你用鼠标点点就能修改配色方案和函数,非常直观。数据处理的“降维打击”
Nushell 是目前社区讨论度最高、最硬核的现代 Shell。它的核心逻辑是:一切皆结构化数据。
在传统的 Shell 里,ls 输出的是一串字符串。如果你想过滤文件大小,你得用 grep、awk、cut 去苦哈哈地切分字符串。 在 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 (精灵语) 走的是极致稳健和编程友好路线。它的作者是华裔开发者 Qi Xiao,设计哲学非常严谨。
Ctrl+R 搜索历史记录的界面非常华丽;按 Ctrl+L 会进入一个类似 ranger 的浮动文件导航模式,直接在 Shell 里选文件。[ 和 [[ 的区别),它的脚本写起来就像是在写一种现代编程语言。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前后端开发等,欢迎一起探讨技术,分享学习实践经验。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。