terminal.integrated.defaultprofile.windows值必须与terminal.integrated.profiles.windows中定义的键名完全一致(含大小写、空格、括号),vscode仅据此匹配,不识别路径或显示名;修改后需关闭所有终端并重启vscode或新建终端生效。

terminal.integrated.defaultProfile.windows 值必须和 profiles 中的 key 完全一致
VSCode 不会根据路径或显示名匹配终端,只认 terminal.integrated.profiles.windows 对象里定义的键名。比如你手动加了:
"terminal.integrated.profiles.windows": {
"Git Bash": { "path": "C:\Program Files\Git\bin\bash.exe", "args": ["--login", "-i"] }
}
那 terminal.integrated.defaultProfile.windows 就必须写 "Git Bash",不能写 "bash.exe" 或 "Git",大小写和空格都得一模一样。
常见踩坑点:
- 改了
defaultProfile却没生效 → 先打开设置搜terminal.integrated.profiles.windows,确认目标 profile 的 key 是什么 - 列表里显示 “PowerShell (pwsh)” →
defaultProfile就得填"PowerShell (pwsh)",不是"pwsh" - 用 WSL → 必须先在
profiles.windows里显式注册,否则"Ubuntu"这类值直接被忽略
改完 settings.json 后终端不切换?关掉所有终端再开
VSCode 不会动态重载已有终端的 shell,已打开的终端实例不会受新配置影响。哪怕你改对了所有字段,只要旧终端还开着,Ctrl + ` 打开的仍是老 shell。
正确操作顺序:
- 保存
settings.json - 点击终端面板右上角垃圾桶图标,关掉所有终端标签页
- 按 Ctrl + ` 新建一个终端
- 看顶部标签页名称是否变成你设的目标(如
Git Bash)
如果仍不对,右键终端标签页 → “Select Default Profile”,看提示“已保存到 [用户/工作区]”——若显示“工作区”,说明项目根目录下 .vscode/settings.json 覆盖了你的全局设置。
为什么 Git Bash 启动黑屏或报 /dev/tty 错误
这不是配置错,是 Git Bash 缺少交互式登录参数。VSCode 默认启动时没传 --login -i,导致它无法初始化 tty 环境。
解决方法:在 profiles.windows 里补全 args:
"Git Bash": {
"path": "C:\Program Files\Git\bin\bash.exe",
"args": ["--login", "-i"]
}
注意:
-
args是数组,每个参数单独一项,不要合并成字符串 - 路径含空格必须用双引号包裹整个路径,否则 VSCode 启动失败后静默 fallback 到 PowerShell
- 如果公司策略禁用了
bash.exe,先在 CMD 里手动运行该路径验证是否能弹出窗口
PowerShell 7 和系统自带 PowerShell 5.1 怎么区分
Windows 自带的是 powershell.exe(v5.1),PowerShell 7+ 是独立安装的 pwsh.exe。两者在 VSCode 中显示名不同,profile key 也不同。
确认方式:
- 在 CMD 里运行
where powershell和where pwsh,看哪个有输出 - 打开命令面板 →
Terminal: Select Default Profile,列表里出现的名字就是可用 key
典型配置:
- 用系统自带:
"terminal.integrated.defaultProfile.windows": "PowerShell" - 用 PowerShell 7+:
"terminal.integrated.defaultProfile.windows": "PowerShell (pwsh)"
别漏掉括号和空格;如果装了多个版本(比如 x64/x86),显示名可能带后缀,必须严格照抄。
最常被忽略的一点:WSL 或 Git Bash 的路径必须可执行且无权限拦截。有些企业设备会静默阻止非微软签名的 exe,此时 VSCode 终端只闪一下就消失,连错误都不报——先在 Windows Terminal 里手动运行那个路径,确认能正常进 shell 再回头调 VSCode 配置。











