3、终端与Shell:Windows Terminal、iTerm2、Linux原生终端的安装与配置,以及Bash/Zsh/Fish的选择

说实话,很多新手朋友一上来就问我:「老师,我该用哪个终端?哪个Shell最好?」

我的回答通常是——先别纠结,把工具装好再说。终端和Shell,说白了就是你跟操作系统对话的窗口。你想想看,一个程序员每天要在这个窗口里敲几百条命令,要是窗口不好用,那得多难受?

我个人习惯是:Windows用Windows Terminal,macOS用iTerm2,Linux直接用原生终端。至于Shell,我推荐Zsh,但Bash和Fish也各有拥趸。下面我一个个说。

3.1 终端模拟器的选择与安装

终端模拟器,就是那个黑乎乎的窗口。别小看它,好的终端能让你效率翻倍。

3.1.1 Windows Terminal

Windows自带的cmd和PowerShell,说实话,颜值和功能都差点意思。微软后来推出了Windows Terminal,这才算真正能打。

安装方式:去Microsoft Store搜索「Windows Terminal」,点安装就行。或者用winget命令:

winget install Microsoft.WindowsTerminal

配置要点

  • 默认启动配置:打开设置,把默认配置文件改成「Windows PowerShell」或「命令提示符」,看你习惯
  • 字体设置:我推荐JetBrains MonoFira Code,支持连字,代码看起来舒服
  • 配色方案:内置了One Half Dark、Solarized等,我个人喜欢Catppuccin,护眼
  • 快捷键:Ctrl+Shift+1/2/3 切换标签页,Ctrl+Shift+D 复制标签页
小技巧:Windows Terminal支持多标签页和分屏。按Alt+Shift+D可以垂直分屏,Alt+Shift+-水平分屏。我写代码时经常左边开编辑器,右边开终端,非常方便。

3.1.2 iTerm2

macOS用户,别用自带的Terminal.app了。iTerm2才是王道。

安装方式:去官网下载,或者用Homebrew:

brew install --cask iterm2

配置要点

  • Profiles设置:Preferences → Profiles → 新建一个Profile,设置字体、配色、背景透明度
  • 热键窗口:Preferences → Keys → Hotkey,设置一个全局快捷键(比如Ctrl+`),按一下就能呼出终端,再按一下隐藏。我写代码时经常用这个,效率极高
  • 分屏:Cmd+D垂直分屏,Cmd+Shift+D水平分屏
  • 搜索:Cmd+F,支持正则搜索
避坑指南:我曾经在iTerm2里设置过「背景图片」,结果图片太花哨,看代码时眼睛都快瞎了。建议背景用纯色或半透明,别搞花里胡哨的。

3.1.3 Linux原生终端

Linux桌面环境自带的终端,比如GNOME Terminal、Konsole、Alacritty等,其实都够用。

配置要点

  • GNOME Terminal:右键打开偏好设置,可以改字体、配色、快捷键
  • Alacritty:如果你追求极致性能,可以试试Alacritty。它用GPU渲染,启动飞快。配置文件是YAML格式,放在~/.config/alacritty/alacritty.yml
  • 快捷键:Ctrl+Shift+T新建标签页,Ctrl+Shift+W关闭标签页
注意:Linux下有些终端不支持真彩色(True Color),如果你用Oh My Zsh或Powerlevel10k主题,可能会显示异常。建议用echo $TERM查看终端类型,如果是xterm-256color,基本没问题。

3.2 Shell的选择:Bash vs Zsh vs Fish

Shell是终端里的「翻译官」,你敲的命令由它解释执行。选哪个?我直接说结论:新手推荐Zsh,老手随意

特性 Bash Zsh Fish
兼容性 最广泛,几乎所有Linux默认 兼容Bash,macOS默认 不兼容Bash,语法不同
插件生态 一般,有bash-it 非常丰富,Oh My Zsh 一般,有Fisher
自动补全 基础 强大,支持模糊匹配 非常强大,开箱即用
主题 非常多,Powerlevel10k
学习成本 低(但迁移成本高)

3.2.1 Bash

Bash是Linux世界的「老大哥」。几乎所有Linux发行版都默认用Bash。如果你在服务器上工作,大概率只能用它。

优点

  • 兼容性最好,脚本到处都能跑
  • 不需要额外安装
  • 稳定,不会出幺蛾子

缺点

  • 自动补全弱,不支持模糊匹配
  • 主题少,颜值低
  • 插件生态不如Zsh

我个人建议:如果你主要做运维或服务器管理,用Bash就够了。但如果你做开发,尤其是前端或Python,Zsh会让你更舒服。

3.2.2 Zsh

Zsh是目前最流行的Shell,macOS从Catalina开始默认就是Zsh。我本人也用了好几年Zsh,回不去了。

安装方式

# macOS(已预装)
# Linux
sudo apt install zsh  # Debian/Ubuntu
sudo yum install zsh  # CentOS/RHEL

# 设置为默认Shell
chsh -s $(which zsh)

配置框架:推荐Oh My Zsh,它帮你管理插件和主题。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

常用插件

  • git:提供git命令的别名和补全
  • zsh-autosuggestions:根据历史命令自动提示,按→键补全
  • zsh-syntax-highlighting:命令语法高亮,敲错了会变红
  • web-search:在终端里直接搜索,比如google 如何安装Python

主题推荐Powerlevel10k,颜值和功能都是顶级的。安装后运行p10k configure,按提示配置就行。

避坑指南:我曾经在配置Powerlevel10k时,发现终端里出现一堆乱码。后来才知道,需要安装Nerd Fonts字体。推荐Meslo Nerd Font,在Powerlevel10k的配置向导里可以直接下载。

3.2.3 Fish

Fish(Friendly Interactive Shell)是「开箱即用」的典范。你不需要配置任何东西,它就已经很好用了。

安装方式

# macOS
brew install fish

# Linux
sudo apt install fish  # Debian/Ubuntu
sudo yum install fish  # CentOS/RHEL

特点

  • 自动补全非常强大,甚至能补全命令的参数
  • 语法高亮开箱即用
  • Web配置界面:运行fish_config,在浏览器里改设置
  • 函数式编程风格,写脚本很爽

缺点

  • 不兼容Bash语法,很多Bash脚本跑不了
  • 插件生态不如Zsh
  • 如果你需要写跨平台的Shell脚本,Fish可能不太合适

我个人觉得:Fish适合那些不想折腾、只想开箱即用的用户。但如果你需要写复杂的脚本,或者需要在不同机器间迁移配置,Zsh更稳妥。

3.3 我的最终推荐

说了这么多,我直接给结论:

  • Windows用户:Windows Terminal + Zsh(通过WSL2)
  • macOS用户:iTerm2 + Zsh + Oh My Zsh + Powerlevel10k
  • Linux用户:原生终端(GNOME Terminal或Alacritty)+ Zsh
  • 服务器用户:Bash就够了,别折腾

嗯,这里要注意:不要为了追求花哨而牺牲效率。我见过有人花了一整天配置终端主题,结果代码一行没写。工具是为你服务的,别被工具绑架了。

下一章,我们会聊包管理器的选择与配置,包括pip、npm、conda等。到时候见!