blog.dopana

Back

毎日誰かが同じ質問をします:

「Windows Terminal vs Git Bash vs WSL — どれを使えばいい?」

この質問はもっともらしく聞こえますが、よくある誤解をはらんでいます。この3つは 競合ではありません。全く別のレイヤーに属しています。

レイヤーコンポーネント役割 / 主な機能
フロントエンド (ターミナルエミュレータ)Windows Terminalタブ、画面分割 (スプリットペイン)、配色テーマ、GPU レンダリング、ショートカット
バックエンドエンジン (内部シェル)PowerShell, CMD, Git Bash, WSLコマンドの受付・解釈、プログラムの実行

シェル(Git Bash や WSL Bash)を選ぶのはあなた。Windows Terminal はそのシェルを表示してくれる、きれいなウィンドウです。

ELI5: フロント vs エンジン#

映画館を想像してください。

  • スクリーン = ターミナルのフロント
  • 映写機 = シェル
  • フィルム = gitbun のようなプログラム

スクリーンはどの映画を映すか選びません。同じスクリーンで何本も映せます。Windows Terminal がスクリーン。Git Bash と WSL は映写機。1つのスクリーンに複数台の映写機を向けて、クリックひとつで切り替えられます。

Git Bash は実際は何?#

Git Bash = ターミネエミュレータ (mintty) + Bash シェル + GNU/Unix ツール群 (ls, grep, sed, ssh…) を、Git for Windows のインストール時にセットで同梱したもの。

2014年当時は画期的でした。Windows に Unix らしきものが何もなかったからです。ただし:

  • 古い mintty を使う(タブなし、GPU描画なし、見た目が古い)。
  • Unix ツールは 翻訳レイヤー — 本物の Windows プログラムは変な動きをしがち。
  • Bash しか手に入らない。PowerShell や cmd をきれいな UI で同一画面に持つ場にはならない。

じゃあ最初から WSL にすれば?#

WSL(Windows Subsystem for Linux)は Windows の中に 本物の Linux カーネル を動かします。Linux ネイティブ開発(dockernode、Ruby gems、ネイティブライブラリ)には最強です。

でも WSL には壁が2つあります。

  1. 別マシン扱い。 ファイルは Windows のドライブではなく ext4 仮想ディスクに置かれます。Windows と Linux(/mnt/c)を往復するのは遅いです。
  2. 結局 Windows Terminal を使う。 WSL を開くと、シェルの出力を表示するウィンドウが要ります。そのウィンドウは — そしてそうあるべき — Windows Terminal です。

つまり WSL vs Windows Terminal は実は本当の対決ではありません。レイヤーが違うので、両方 必要です。

比較表#

能力Windows TerminalGit Bash (単独)WSL ターミナル
何かターミナル(フロント)ターミナル + Bash + ツールLinux OS + シェル
タブありなしフロント次第
分割ペインありなしフロント次第
GPU描画あり (DirectWrite)なし (mintty GDI)フロント次第
真の 24bit 色あり一部フロント次第
Unicode / emoji / CJK優秀弱いフロント次第
マルチシェルCMD, PowerShell, WSL, SSHBash のみBash のみ
テーマ / acrylic / 透明ありなしフロント次第
本物の 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+,

設定ファイルでカスタム#

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

すべてオープンソース (MIT)。

[!TIP] 最速・最安全: Git Bash を Windows Terminal の 中 でプロフィールとして C:\Program Files\Git\bin\bash.exe に設定して動す。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 はシェルではありません。Git Bash と WSL はターミナルのフロントではありません。
  • 違う OS レイヤーを解くものなので、「どちらか」ではなく 一緒に 使います。
  • Windows Terminal がタブ、ペイン、GPU描画、テーマ、全シェルの共通ホームを提供。
  • WSL が本物の Linux ランタイム、Git Bash はカーネルなしで Unix ツール。

参考資料#