vscode终端默认cmd需替换为powershell或git bash,因配置优先级(远程>工作区>用户)、路径未加入path、profile名称不匹配、未新建终端或跨平台配置错误导致失效。

VSCode 内置终端默认用 cmd.exe,但实际开发中它既不支持现代管道、对象操作,也不兼容大多数 Git / Shell 脚本——直接换掉是刚需,不是可选项。
为什么改了设置还是启动 cmd?
最常见原因是配置被覆盖或未生效。VSCode 终端 profile 有明确优先级:远程 > 工作区 > 用户。哪怕你在用户设置里写了 "terminal.integrated.defaultProfile.windows": "PowerShell",只要当前项目目录下有 .vscode/settings.json,且里面也定义了同名字段,就会以工作区配置为准。
- 打开命令面板(
Ctrl + Shift + P),运行Terminal: Select Default Profile,看列表里是否真有PowerShell或Git Bash;没有就说明 VSCode 根本没检测到对应程序 - 在 CMD 窗口执行
where powershell或where git-bash.exe,确认返回路径有效;若无输出,说明没装或没进PATH - 检查开发者工具(
Ctrl + Shift + I→ Console 标签),输入localStorage.getItem('terminal.integrated.defaultProfile'),看返回值是不是你设的字符串
settings.json 配置必须写对这三处
UI 设置界面改得快,但容易漏细节;手写 settings.json 更稳,尤其当 Git Bash 没自动识别时。
-
"terminal.integrated.defaultProfile.windows"值必须和Terminal: Select Default Profile列表里显示的名称**完全一致**,比如 PowerShell 7 显示为PowerShell (pwsh),就不能写成"PowerShell" - 若 Git Bash 不在列表中,需补全
"terminal.integrated.profiles.windows"块,path必须指向git-bash.exe(不是bash.exe),典型路径是C:\Program Files\Git\git-bash.exe - Git Bash 启动后不读
.bashrc?加"args": ["--login", "-i"],否则环境变量、别名、cd c:/xxx都会异常
新建终端 ≠ 切换终端
VSCode 不会把正在跑 cmd.exe 的终端窗口“热切换”成 Git Bash。改完配置后,旧终端照常运行,新终端才按新规则启动。
- 关掉所有已打开的终端面板(点垃圾桶图标)
- 用快捷键
Ctrl + Shift + `新建,或命令面板执行Terminal: Create New Terminal - 不要点已有终端右上角的「+」按钮——那个是复用当前终端类型,不是新建默认类型
WSL 或 Remote-SSH 场景下完全不生效?
那是环境搞错了。terminal.integrated.defaultProfile.windows 只在 Windows 本地生效。进了 WSL 或连上 Linux 远程主机,VSCode 自动切到 Linux 模式,此时该配的是 terminal.integrated.defaultProfile.linux,且值应为 bash 或 zsh,不是 Git Bash。
真正容易被忽略的是:Git Bash 的 git-bash.exe 是 Windows 程序,它不能在 WSL 里运行;反过来,WSL 的 bash 也不能在 Windows 终端里当 profile 注册——跨平台 profile 名称和路径不能混用。











