blog.dopana

Back

Ngày nào cũng có người hỏi cùng một câu:

“Windows Terminal vs Git Bash vs WSL — nên dùng cái nào?”

Câu hỏi nghe có vẻ hợp lý, nhưng nó chứa một hiểu lầm phổ biến. Ba thứ này không phải là đối thủ. Chúng nằm ở các tầng khác nhau trong hệ thống của bạn:

TầngThành phầnVai trò / Tính năng
Giao diện (Terminal Emulator)Windows TerminalTab, chia màn hình (split pane), màu sắc, GPU rendering, phím tắt
Động cơ (Shell bên trong)PowerShell, CMD, Git Bash, WSLNhận và xử lý câu lệnh, thực thi chương trình

Bạn chọn một shell (Git Bash hoặc WSL Bash). Windows Terminal là cửa sổ đẹp đẽ hiển thị cái shell đó cho bạn.

ELI5: Giao diện vs Động cơ#

Hãy nghĩ đến rạp phim.

  • Màn hình là giao diện terminal.
  • Máy chiếu là shell.
  • Cuộn phim là chương trình như git hay bun.

Màn hình không chọn phim nào chạy. Bạn có thể chiếu nhiều phim trên cùng một màn hình. Windows Terminal là màn hình. Git Bash và WSL là các máy chiếu. Bạn có thể trỏ nhiều máy chiếu vào một màn hình — và chuyển qua lại bằng một cú click.

Git Bash Thực Ra Là Gì?#

Git Bash = một terminal emulator (mintty) + Bash shell + bộ công cụ GNU/Unix (ls, grep, sed, ssh, …) được đóng gói cùng nhau khi bạn cài Git cho Windows.

Nó rất hay vào năm 2014 vì Windows bấy giờ chẳng có gì giống Unix. Nhưng:

  • Nó dùng mintty cũ kỹ (không tab, không GPU rendering, giao diện lỗi thời).
  • Công cụ Unix là một lớp dịch — các chương trình Windows thực sự thường chạy lạ lùng.
  • Nó chỉ cho bạn Bash, không phải nơi vừa chạy PowerShell lẫn cmd với giao diện đẹp.

Vậy Tại Sao Không Dùng WSL Luôn?#

WSL (Windows Subsystem for Linux) chạy một kernel Linux thực sự bên trong Windows. Rất tuyệt cho phát triển Linux-native: docker, node, gem ruby, thư viện native — tất cả hoạt động như trên một server Linux.

Nhưng WSL có hai bức tường:

  1. Nó là một máy riêng biệt. File nằm trên đĩa ảo ext4, không phải ổ Windows của bạn. Sao chép qua lại (/mnt/c) chậm.
  2. Nó vẫn dùng Windows Terminal. Khi bạn mở WSL, output của shell vẫn cần một cửa sổ. Cái cửa sổ đó là — và nên là — Windows Terminal.

Vậy WSL vs Windows Terminal thực sự không phải cuộc thi. Chúng khác tầng; bạn cần cả hai.

Bảng so sánh#

Tính năngWindows TerminalGit Bash (đứng riêng)WSL terminal
Là gìTerminal (giao diện)Terminal + Bash + công cụOS Linux + shell
TabKhôngTùy giao diện
Split paneKhôngTùy giao diện
GPU-accelerated renderingCó (DirectWrite)Không (mintty GDI)Tùy giao diện
Màu 24-bit thậtMột phầnTùy giao diện
Unicode / emoji / CJKTuyệt vờiYếuTùy giao diện
Chứa nhiều shellCMD, PowerShell, Git Bash, WSL, SSHChỉ BashChỉ Bash
Theme / acrylic / độ trong suốtKhôngTùy giao diện
Chạy app Linux thậtKhôngKhông
Command paletteTùy giao diện

Chủ đề rõ ràng: cột “trực quan / UX” là nơi Windows Terminal thắng. Cột “Linux runtime” là nơi WSL thắng. Chúng là bổ khuyết, không phải đối thủ.

Cách Chạy Tất Cả Trong Windows Terminal#

  1. Cài Windows Terminal — trên Windows 11 nó đã là terminal mặc định.
  2. Cài WSL 2 cho Linux thực sự.
  3. Cài Git for Windows cho profile Git Bash.
  4. Có thể cài PowerShell 7.

Mở Windows Terminal, click mũi tên cạnh dấu + của tab — bạn sẽ thấy mọi profile. Chọn bất kỳ, hoặc mở nhiều cái cạnh nhau:

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

Phím tắt hữu ích#

Hành độngPhím
Tab mớiCtrl+Shift+T
Chuyển tabCtrl+Tab / Ctrl+Shift+Tab
Split pane (ngang)Alt+Shift+-
Split pane (dọc)Alt+Shift++
Command paletteCtrl+Shift+P
Tìm kiếmCtrl+Shift+F
Mở cài đặtCtrl+,

Tuỳ biến#

{
  "profiles": {
    "defaults": {
      "font": { "face": "Cascadia Mono" },
      "opacity": 90,
      "useAcrylic": true
    }
  }
}
json

Tất cả mã nguồn mở (MIT).

[!TIP] Thắng nhanh nhất, không rủi ro: chạy Git Bash bên trong Windows Terminal bằng cách trỏ một profile vào C:\Program Files\Git\bin\bash.exe. Bạn giữ công cụ Unix, nhưng có thêm tab, GPU, split pane và màu hiện đại.

Một vài điều cần cẩn thận#

[!WARNING] WSL và Windows dùng file system khác nhau. Hãy giữ file làm việc ở phía Linux (~/projects) để nhanh. Nhảy vào /mnt/c/... thường xuyên khi dùng node/docker sẽ làm mọi thứ chậm.

Khi nào dùng gì?#

  • PowerShell + bạn quản lý Windows (registry, service, Active Directory): dùng PowerShell trong Windows Terminal.
  • Bạn cần Linux thật: dùng WSL 2 — nhưng mở nó từ Windows Terminal.
  • Bạn chỉ muốn git + lệnh Unix nhanh, ít setup: Git Bash trong Windows Terminal.
  • Không bao giờ dùng cửa sổ mintty/Git Bash gốc hay cmd mặc định nữa — chúng đều mất tab, màu và GPU.

Tóm lại#

  • Windows Terminal không phải shell; Git Bash và WSL không phải giao diện terminal.
  • Chúng giải quyết các tầng khác nhau của hệ điều hành, nên hãy dùng cùng nhau, chứ không phải “chọn một”.
  • Windows Terminal cho bạn tab, màn hình, GPU rendering, theme và một nhà cho mọi shell kết hợp.
  • WSL cho runtime Linux thực; Git Bash cho công cụ Unix mà không cần kernel.

Tài liệu tham khảo#