老折腾终端的人估计都有过这种体验:Git Bash 的小绿窗口单看还行,可一旦你同时开着 PowerShell、CMD、WSL,任务栏里一排终端图标来回切换,脑子稍微一乱就点错。我一直想把 Git Bash 直接塞进 Windows Terminal,让所有 shell 都收拢到一个工具里,一个标签页切来切去,快捷键统一,配色也能一起管。折腾完发现这事并不复杂,但坑也不少,Git Bash 的启动方式、路径选择、配色方案、GUID 冲突,每一处都能让人卡半天。这篇就把我从零到一的完整配置过程和踩坑记录写出来,给想统一终端的同学一份能直接抄作业的参考。
1. 为什么要把 Git Bash 装进 Windows Terminal
1.1 先看 Windows Terminal 到底是什么
Windows Terminal 是微软推出的现代终端应用,它本身不是 shell,而是一个“壳子”,负责承载各种命令行程序。你可以在里面跑 PowerShell、CMD、WSL,也可以通过配置接入 Git Bash、Anaconda Prompt、ssh 会话等任何能在命令行里启动的程序。
相比系统自带的 conhost(就是双击 cmd 或 powershell 后弹出的那个窗口),Windows Terminal 有几个实打实的优势:
- 多标签页,一个窗口管理所有 shell,不用在任务栏堆一堆窗口。
- 支持分屏,左半边跑 Git Bash,右半边开 PowerShell,对比日志、同步操作很方便。
- GPU 加速渲染,显示大量输出时不拖泥带水,滚动更跟手。
- 统一的快捷键体系,复制粘贴、新建标签、切换标签一套键搞定。
- 全局配置文件 settings.json,所有外观和行为都写成文本,方便备份、同步到新机器。
很多人装了 Windows Terminal 后发现下拉菜单里只有 PowerShell 和 CMD,Git Bash 不在里面,于是继续每天点那个绿色图标。其实只要在配置文件里加一段 profile 就行,下面的内容就是干这个的。
1.2 接入 Git Bash 后的真实收益
把 Git Bash 拉进 Windows Terminal,最大的变化不是“多了一个启动入口”,而是日常操作节奏变了。
以前我处理一个前端项目,得先开 Git Bash 跑git pull,再看代码,然后切到 PowerShell 跑npm run dev,两边窗口来回点。现在直接在 Windows Terminal 里按Ctrl+Shift+1开一个 Git Bash 标签,再按Alt+Shift+2开一个 PowerShell 标签,左右分屏,两边操作互不干扰,截图、复制输出都方便。
还有一点是配色统一。Git Bash 自带的 mintty 窗口有一套自己的配色,和 Windows Terminal 的样子不搭。接入之后,我给 Git Bash 配了和 PowerShell 一样的暗色主题,视觉上完全是同一套环境,写脚本、看日志都顺眼很多。
如果你平时会用到 WSL,那收益更大。Windows Terminal 的标签页可以在 Git Bash、Ubuntu、PowerShell 三者之间无感切换,这才是真正意义上的“一个终端搞定所有事”。
2. 动手前的准备:环境确认与路径摸底
2.1 检查 Windows Terminal 安装版本
开始配置前,先确认 Windows Terminal 已经装好且版本不要太老。打开任意终端窗口,点击窗口标题栏右侧的下拉箭头,进入“设置”,再点“关于”,能看到版本号。只要不是两三年前的远古版本,基本都支持 JSON 配置和自定义 profile。
关于安装方式多说一句。正常情况去 Microsoft Store 搜 Windows Terminal 装就行。但有些公司电脑被策略限制,商店不可用,这时候可以走离线安装:去 GitHub 上微软的 Windows Terminal 仓库 Release 页面,下载.msixbundle或.appxbundle后缀的安装包,用 PowerShell 执行Add-AppxPackage -Path 文件路径装上去。这个方法我在一台不让用商店的机器上验证过,能用,版本跟进到正式版或 Preview 版都行。
2.2 找到真正的 bash.exe,搞清楚用哪个
Git Bash 是 Git for Windows 自带的模拟 Bash 环境,安装路径通常是C:\Program Files\Git。光知道这个还不够,关键是找到正确的 bash.exe。
看 Git 安装目录下的结构,你会看到bin\bash.exe和usr\bin\bash.exe两个文件。通常建议用bin\bash.exe,这是 Git for Windows 为 Windows 环境专门打包的入口,它会设置好 MSYS 相关的环境变量和 DLL 搜索路径。直接用usr\bin\bash.exe也不是不行,但偶尔会出现工具链找不到、编码不对的怪问题,没必要给自己添堵。
还有一个常见的坑:有人会把git-bash.exe直接当作启动命令填进去。git-bash.exe是 Git 安装包提供的一个启动器,它会调用 mintty 再加载 bash。Windows Terminal 本身不依赖也不需要用 mintty,而且 mintty 有自己的窗口逻辑,放进 Windows Terminal 里容易出乱子。正确做法是把启动命令指向 bash.exe,再用--login -i参数让它以登录交互模式启动。后面细说。
注意:如果 Git 不是装在默认路径,需要把绝对路径写对。安装时选了“自定义安装路径”的,记得在资源管理器里确认一下到底装到了哪。
2.3 启动参数--login -i是干什么的
配置里常见的启动命令是这样:
C:\Program Files\Git\bin\bash.exe --login -i两个参数含义:
--login表示登录 shell,启动时读/etc/profile和用户主目录下的.bash_profile或.bash_login。Git Bash 里的 PATH 环境变量、一些系统别名、npm/ yarn 的全局路径,很多都靠这个步骤加载。-i表示交互模式。没有这个参数,bash 会认为你不是在真正“使用”它,提示符、历史记录、某些 job control 功能都会不正常。
所以这两个参数不是写着好看的,省掉任何一个都可能碰到 PATH 不完整、命令找不到的尴尬局面。
3. 核心操作:通过 settings.json 把 Git Bash 加进去
3.1 如何打开配置文件
Windows Terminal 的所有 profile 配置都放在settings.json里。打开方式有两种:
- 按
Ctrl+逗号,在设置界面左下角找到“打开 JSON 文件”。 - 直接在地址栏(Windows Terminal 是标签栏往下一点的按钮)点下拉箭头,选择“设置”,再点“打开 JSON 文件”。
文件默认路径类似:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json如果是从 GitHub Release 离线安装的版本,路径里的包名会略有不同,但LocalState\settings.json这个规律基本不变。
这个文件本质是 JSON,修改前建议先备份一份。Windows Terminal 对 JSON 格式比较敏感,一个多余逗号可能导致整个配置不被加载。我一般会复制一份到桌面再动刀,改完出了问题马上恢复。
3.2 编写 Git Bash 的 profile 片段
在settings.json里找到profiles对象,它下面有个list数组,里面每一项就是一个 profile。给 Git Bash 新起一个 profile,核心配置如下:
{ "guid": "{你的GUID}", "name": "Git Bash", "commandline": "C:\\Program Files\\Git\\bin\\bash.exe --login -i", "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico", "startingDirectory": "%USERPROFILE%", "tabTitle": "Git Bash", "colorScheme": "One Half Dark", "font": { "face": "Cascadia Mono", "size": 12 } }字段逐个解释:
guid:这个 profile 的唯一标识,必须是{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}格式。不能和 list 里其他 profile 重复。name:下拉菜单里显示的名字。commandline:启动时执行的命令行。注意 JSON 字符串里反斜杠要转义,写成双反斜杠\\。懒人也可以换成正斜杠:C:/Program Files/Git/bin/bash.exe --login -i,Windows 认这个写法,JSON 里看着还清爽。icon:标签栏和下拉菜单里的图标。Git 安装目录下有现成的 ico 文件,直接用。startingDirectory:打开后初始进入的目录。%USERPROFILE%是用户主目录,比默认进入系统盘某个奇怪路径舒服得多。tabTitle:标签页上显示的名字,不设的话默认取name。colorScheme:配色方案名,需要确保schemes数组里存在同名方案。font:字体和字号。不是必填,但建议显式指定,后面中文乱码部分会讲。
3.3 profile 放 list 数组里,别搞错位置
有同学会把新 profile 顺手加到defaults里,这是不对的。
profiles.defaults是全局默认配置,所有 profile 都会继承,适合放公共设置,比如默认背景色、全局字体。但一个具体 shell 的启动命令和图标必须放到profiles.list数组里,否则 Windows Terminal 不知道该如何启动它。
正确的层级结构大概是:
{ "profiles": { "defaults": { "font": { "face": "Cascadia Mono" } }, "list": [ { "guid": "{GUID}", "name": "Git Bash", "commandline": "..." } ] } }defaults里定义的属性可以被 list 里单个 profile 覆盖,先有全局,再有个性化,思路很清晰。
3.4 新版图形化方式也能加
如果你的 Windows Terminal 版本比较新,设置界面里直接有“添加新配置文件”的按钮。点开之后系统会自动扫描已安装的 shell,Git Bash 一般会出现在候选列表里,选中即可。
这个方式生成的 profile 会自动填好 guid、commandline 等基础字段,但startingDirectory、colorScheme这些美化项往往不会自动配,仍是半成品。我习惯先走图形化生成,再打开 JSON 手动补参数,两条路结合,省事还不容易漏。
4. 实操过程演示:从零到一的完整配置方案
4.1 生成一个不重复的 GUID
GUID 最稳的生成方式是用 PowerShell:
[guid]::NewGuid().ToString()执行后输出一串xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,记得外面包一层大括号,Windows Terminal 认这个格式。
也可以用在线 GUID 生成器,本质一样。不建议手动改一个已有 guid 去撞运气,撞重复的后果就是该 profile 无法正常加载,Windows Terminal 会提示出错。
4.2 完整 settings.json 示例
我用一个相对精简但完整的实例展示添加完 Git Bash 后的样子。注意这是片段,不是完整文件,实际文件里还有 actions、keybindings 等部分,别整个覆盖掉。
{ "profiles": { "defaults": { "font": { "face": "Cascadia Mono", "size": 11 }, "opacity": 97, "useAcrylic": true }, "list": [ { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "name": "PowerShell", "commandline": "powershell.exe" }, { "guid": "{7717e2c6-1c0b-4e8e-8e88-6b8b5e13e838}", "name": "Git Bash", "commandline": "C:\\Program Files\\Git\\bin\\bash.exe --login -i", "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico", "startingDirectory": "%USERPROFILE%", "tabTitle": "Git Bash", "colorScheme": "One Half Dark", "font": { "face": "Cascadia Mono", "size": 12 } } ] }, "schemes": [ { "name": "One Half Dark", "background": "#282c34", "foreground": "#dcdfe4", "cursorColor": "#528bff", "black": "#282c34", "red": "#e06c75", "green": "#98c379", "yellow": "#e5c07b", "blue": "#61afef", "purple": "#c678dd", "cyan": "#56b6c2", "white": "#dcdfe4", "brightBlack": "#5c6370", "brightRed": "#e06c75", "brightGreen": "#98c379", "brightYellow": "#e5c07b", "brightBlue": "#61afef", "brightPurple": "#c678dd", "brightCyan": "#56b6c2", "brightWhite": "#ffffff" } ] }看到这里可能有人会问,schemes 里那堆颜色是干嘛的。这是 Windows Terminal 的配色方案定义。Git Bash 里跑的很多工具,比如ls的彩色输出、git status 的颜色提示,最终都是通过 ANSI 转义序列告诉终端“我要什么颜色”,终端再去查 scheme 里的色值。所以给 Git Bash 单独指定一个顺眼的 scheme,能直接改善使用体验。
4.3 验证加载结果
写完配置文件保存后,Windows Terminal 会自动检测并重载。可以马上验证:
- 点标签栏右侧下拉箭头,看菜单里是否出现了“Git Bash”。
- 点击后看是否弹出 bash 提示符,
pwd显示的是不是%USERPROFILE%对应的目录。 - 输入
echo $BASH_VERSION,确认 bash 正常运行。
如果没出现,先按Ctrl+Shift+P打开命令面板,输入 “reload” 强制执行一次重载。再不行就重启 Windows Terminal。
4.4 顺手把 Git Bash 设成默认 shell
配置完新 profile 后,打开 Windows Terminal 默认还是会进 PowerShell。如果日常工作里 Git Bash 用得最多,可以在最外层(profiles.list之前的那一级)加一行:
"defaultProfile": "{7717e2c6-1c0b-4e8e-8e88-6b8b5e13e838}"defaultProfile的值就是想要默认启动的那个 profile 的 guid。改完保存,再开 Windows Terminal 直接就是 Git Bash。
这个操作我强烈建议做,很多人装完 WT 一直用 PowerShell,直到某天意识到“我天天开 Git Bash,为什么每次都要多点一下”,才想起来改。改完舒服得很。
5. 常见问题与排查技巧实录
5.1 启动后秒退或黑屏
现象:从下拉菜单点 Git Bash,窗口一闪就没了,或者黑屏卡住。
大概率原因:
commandline里的路径写错,bash.exe 实际不在这。- 路径中反斜杠没有转义,JSON 解析时路径变成了非法字符串。
- 填成了
git-bash.exe或mintty.exe,导致启动逻辑混乱。
排查方法:先用资源管理器确认C:\Program Files\Git\bin\bash.exe存在;然后单独复制路径到 PowerShell 里执行一遍看看能不能正常进入 bash;最后核对 settings.json 里有没有双反斜杠。
如果改完还是不生效,打开 settings.json 看有没有红色波浪线或启动报错提示。Windows Terminal 通常会把解析错误显示在界面上,照着提示改基本能解决。
5.2 中文乱码、Nerd Font 图标显示成方块
Git Bash 里很多主题和 prompt 工具会用到特殊字符,比如 Nerd Font 图标。如果字体不支持,显示出来就是一个个方块或问号。
解决办法:
- 把
font.face设置成一个本身自带等宽风格的字体。Windows Terminal 自带的 Cascadia Mono 对中文支持一般,建议换 “Sarasa Mono SC”(更纱黑体),中文字符和 ASCII 对齐做得不错,Nerd Font 图形也齐全。 - 不想换字体的话,在新版本 Windows Terminal 里可以给 profile 的 font 加
fallback字段,指定中文字体兜底,比如:
"font": { "face": "Cascadia Mono", "fallback": "Microsoft YaHei UI" }注意 fallback 字段的写法在不同版本里略有差别,老版本不识别就只能老老实实换字体。
5.3 颜色整体偏怪,ls 输出惨不忍睹
有段时间我给 Git Bash 配了 scheme 后,ls的颜色还是跟 Windows Terminal 默认的一套完全不一样。原因在于 Git Bash 里LS_COLORS在登录脚本里被重新设置过,最终渲染结果不一定完全听终端的 scheme 指挥。
处理方法:
- 先确认 profile 里
colorScheme是存在的,且schemes数组中名字完全一致。 - 在
.bashrc里手动设置LS_COLORS,固定一套自己舒服的颜色。 - 试试不同的配色方案,比如 “Campbell”、”Tango Dark”,换完重开标签页看效果。
推荐把 Git Bash 的 scheme 和 PowerShell 用同一个,这样视觉上比较统一。One Half Dark、Dracula、Tokyo Night 都是社区里比较受欢迎的选择,GitHub 上一搜“Windows Terminal themes”能拿到一堆现成配置。
5.4 startingDirectory 指向不对,一开就进 System32
这句话看着像废话,但真的有人踩过:明明设置了startingDirectory为%USERPROFILE%,打开后却进了C:\Windows\System32。
原因:Git Bash 在--login模式下,会先执行系统级 profile 脚本,某些初始化逻辑会把当前目录切走。另外如果环境变量没配好,bash 可能找不到用户主目录,最终落到系统目录里。
排查方法:启动后先执行echo $HOME,看 HOME 指向哪里。%USERPROFILE%只是 Windows 为用户主目录设置的变量,bash 里识别的是 HOME。如果 HOME 没设置或被清掉,启动目录自然不对。
解决办法是在 .bashrc 里显式指定:
export HOME="/c/Users/你的用户名" cd "$HOME"保存后重新打开 Git Bash 标签,问题基本消除。
5.5 管理员权限问题
Windows Terminal 如果以普通权限运行,里面启动的 Git Bash 也不能提权,没法直接执行需要管理员身份的命令。反过来,如果 Windows Terminal 是以管理员身份打开的,所有标签页都会继承管理员权限,这一点和传统 cmd 的行为一致。
如果你很在意权限隔离,建议日常用普通权限跑 Windows Terminal,需要管理员操作的时候单独开一个管理员标签页。Windows Terminal 可以给某个 profile 设置"elevate": true,这样从下拉菜单启动时它就会请求提权,其他标签页保持普通权限。
这个字段不是所有版本都有,老版本不支持时只能手动创建快捷方式时勾选“以管理员身份运行”。我自用的方案是:普通权限跑 Git Bash 和 PowerShell,把一个小工具单独配置到管理员 profile,互不干扰。
5.6 更新 Git 后 profile 失效
Git for Windows 更新安装后,偶尔会遇到 Git Bash profile 打不开。原因是更新程序把 Git 目录结构重置了,或者把自定义安装路径改掉了。虽然不常见,但一旦遇到就需要重新确认commandline、icon里的路径是否仍然有效。
改法很简单:打开资源管理器,确认 bash.exe 的路径,更新 settings.json 后保存即可。也顺便看看用户主目录下的.bashrc、.bash_profile有没有被更新程序动过,有的话重新调整一下。
最后分享一个小技巧
把 Git Bash 接进 Windows Terminal 之后,我日常基本就一个终端窗口走天下了。Git Bash 跑 git 命令,PowerShell 跑系统脚本,WSL 跑 Linux 工具链,全部标签页管理。
再分享一个我用了很久的小技巧:在 Windows Terminal 设置里把 Git Bash 设为默认 profile 之后,可以按Win+R直接输入wt回车,秒开一个 Git Bash 标签。配合Ctrl+Shift+1、Ctrl+Shift+2之类的新建标签快捷键,切换 shell 根本不需碰鼠标。折腾好这一套之后,你会发现以前那种“开一堆窗口来回切”的日子,真的可以彻底翻篇了。