blog.dopana

Back

每天都有人问同一个问题:

「Windows Terminal vs Git Bash vs WSL —— 该用哪个?」

这个问题听起来合理,却暗藏一个常见误解。这三者并不是对手。它们处于不同的层级:

层级组件角色 / 功能
前端 (终端模拟器)Windows Terminal标签页、分屏 (split pane)、主题配色、GPU 渲染、快捷键
后端引擎 (内部 Shell)PowerShell, CMD, Git Bash, WSL接收并解析命令、执行程序

你挑选一个 shell(Git Bash 或 WSL Bash)。Windows Terminal 是那个把你挑的 shell 显示出来的漂亮窗口。

ELI5:前端 与 引擎#

想想电影院。

  • 屏幕 = 终端前端
  • 放映机 = shell
  • 胶片 = 像 gitbun 这样的程序

屏幕并不选择放哪部电影。同一块屏幕可以放很多部电影。Windows Terminal 是屏幕。Git Bash 和 WSL 是放映机。你可以把多台放映机对准同一块屏幕——点一下即可切换。

Git Bash 到底是什么?#

Git Bash = 一个终端模拟器(mintty)+ Bash shell + 一套 GNU/Unix 工具(lsgrepsedssh…),在安装 Git for Windows 时打包在一起。

2014 年这很了不起,因为彼时 Windows 没有任何 Unix 味的东西。但:

  • 它用的是老旧的 mintty(没有标签页、没有 GPU 渲染、界面过时)。
  • Unix 工具是一层 翻译层——真正的 Windows 程序经常表现怪异。
  • 它只给你 Bash,不是一个能同时以美观界面运行 PowerShell 和 cmd 的地方。

那为什么不干脆用 WSL?#

WSL(适用于 Linux 的 Windows 子系统)会在 Windows 中运行真正的 Linux 内核。这对 Linux 原生开发很强:dockernode、Ruby gems、native 库——一切都和在 Linux 服务器上一样。

但 WSL 有两堵墙:

  1. 它是另一台机器。 文件放在 ext4 虚拟磁盘上,而不是你的 Windows 磁盘。Windows 与 Linux(/mnt/c)之间来回复制很慢。
  2. 它仍然要用 Windows Terminal。 打开 WSL 时,shell 输出还是需要一个窗口。那个窗口就是——而且应该是——Windows Terminal。

所以 WSL vs Windows Terminal 其实不是真正的对决。它们层级不同,你要的是两者。

对比表#

能力Windows TerminalGit Bash(单独)WSL 终端
是什么终端(前端)终端 + Bash + 工具Linux 系统 + shell
标签页看前端
分屏看前端
GPU 渲染有(DirectWrite)无(mintty GDI)看前端
真 24 位真彩色部分看前端
Unicode / emoji / 中文出色看前端
承载多 shellCMD、PowerShell、WSL、SSH仅 Bash仅 Bash
主题 / 亚克力 / 透明看前端
运行真实 Linux 应用
命令面板看前端

规律很明显:「视觉 / UX」一栏是 Windows Terminal 的强项。「Linux 运行时」一栏是 WSL 的强项。它们互补,不是竞争。

如何在 Windows Terminal 里全部用上#

  1. 安装 Windows Terminal——在 Windows 11 上它已是默认终端。
  2. 安装 WSL 2 获得真正的 Linux。
  3. 安装 Git for Windows 获得 Git Bash 配置文件。
  4. 可选安装 PowerShell 7

点击标签 + 旁的 箭头,能看到所有配置文件。选任意多个,并排打开:

┌─ Ubuntu (WSL) ──┐┌─ PowerShell 7 ─┐
│ $ ls            ││ PS> node ver  │
│ ...             ││ ...            │
└─────────────────┘└────────────────┘
text

常用快捷键#

动作快捷键
新建标签页Ctrl+Shift+T
切换标签页Ctrl+Tab / Ctrl+Shift+Tab
横向分屏Alt+Shift+-
纵向分屏Alt+Shift++
命令面板Ctrl+Shift+P
搜索Ctrl+Shift+F
打开设置Ctrl+,

用配置自定义#

settings.json(主题片段)
{
  "profiles": {
    "defaults": {
      "font": { "face": "Cascadia Mono" },
      "opacity": 90,
      "useAcrylic": true
    }
  }
}
json

全部开源(MIT)。

[!TIP] 最快、风险最低的一步:把一个 profile 指向 C:\Program Files\Git\bin\bash.exe,在 Windows Terminal 里跑 Git Bash。Unix 工具照旧,却额外得到标签、GPU、分屏和现代配色。

需要注意#

[!WARNING] WSL 和 Windows 使用不同的文件系统。把工作文件放在 Linux 一侧(~/projects)才快。用 node/docker 时频繁进出 /mnt/c/... 会让一切变慢。

何时用哪个#

  • 用 PowerShell 管理 Windows(注册表、服务、AD):在 Windows Terminal 里用 PowerShell。
  • 需要真正的 Linux:用 WSL 2——但从 Windows Terminal 打开。
  • 只想快速用到 git + Unix 命令、安装量小:Windows Terminal 里的 Git Bash。
  • 别再用原始的 mintty / Git Bash 快捷方式或默认 cmd 窗口——它们都丢失标签、颜色和 GPU。

总结#

  • Windows Terminal 不是 shell;Git Bash 和 WSL 也不是终端前端。
  • 它们解决的是操作系统层级不同的问题,所以一起用,而不是「二选一」。
  • Windows Terminal 提供标签、分屏、GPU 渲染、主题,以及承载所有 shell 的统一家园。
  • WSL 提供真正的 Linux 运行时;Git Bash 提供不用 Linux 内核的 Unix 工具。

参考资料#