必须用git-bash.exe而非bash.exe,因前者自动加载Git环境变量(PATH、HOME等),后者为纯POSIX shell,不支持Windows路径映射和命令封装,导致git、ssh、ls等命令报“command not found”。

必须用 git-bash.exe,不能用 bash.exe 或 sh.exe —— 否则终端能开,但 git、ssh、ls 全部报“command not found”。
为什么 bash.exe 路径总是错的
很多人复制网上示例填 "C:Program FilesGitinash.exe",结果终端启动后连 git --version 都失败。这不是 VSCode 配置问题,是 Git for Windows 的设计逻辑:只有 git-bash.exe 会自动加载 Git 自带的环境变量(PATH、HOME、MSYS_NO_PATHCONV 等),而 bash.exe 是纯 POSIX shell,不带任何 Windows 风格路径映射和命令封装。
-
git-bash.exe默认路径是:C:Program FilesGitgit-bash.exe(64 位标准安装)或C:Users{user}AppDataLocalProgramsGitgit-bash.exe(便携/用户级安装) - 右键该文件 → “属性” → 复制“目标”栏内容,删掉末尾的
--cd-to-home,再转义反斜杠(\)或直接用正斜杠(/) - 别用
where bash或where git查路径——它们返回的往往是bash.exe,不可靠
terminal.integrated.profiles.windows 必须显式注册
VSCode 不会自动扫描系统里所有 shell,它只认你在 profiles.windows 里明确定义的项。哪怕你装了 Git Bash,只要没在 JSON 里写清楚,"Git Bash" 这个名字就等于不存在。
- profile 的 key(比如
"Git Bash")必须和terminal.integrated.defaultProfile.windows的值**完全一致**(空格、大小写、括号都不能差) - 必须同时写
profiles.windows和defaultProfile.windows,缺一不可;只改后者,VSCode 会静默回退到 PowerShell - 如果路径含空格或中文,JSON 仍可工作,但建议避免——某些旧版 VSCode 解析会出错
- 配置示例(注意逗号分隔、引号闭合):
"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "C:/Program Files/Git/git-bash.exe",
"args": ["--login", "-i"]
}
},
"terminal.integrated.defaultProfile.windows": "Git Bash"
改完设置终端还不切换?不是配置错了,是机制没理解
VSCode 绝不会把正在运行的 PowerShell 终端“热切换”成 Git Bash。它只影响「新建」的终端实例。已打开的标签页永远保持原样,哪怕你改了十遍 settings.json。
- 必须点终端面板右上角垃圾桶图标,关掉所有终端标签页(不是最小化,是彻底关闭)
- 用
Ctrl + Shift + `新建终端,或命令面板执行Terminal: Create New Terminal - 千万别点已有终端右上角的「+」——那是复用当前类型,不是新建默认类型
- 如果顶部标签页还是 PowerShell,说明 profile 没注册成功:打开命令面板,运行
Terminal: Select Default Profile,看列表里有没有Git Bash;没有,就是 JSON 格式错误或路径无效
容易被忽略的覆盖优先级
你改的是用户设置,但项目根目录下 .vscode/settings.json 里如果也写了 terminal.integrated.defaultProfile.windows,那它会生效,用户设置被完全忽略。远程开发(SSH/WSL)场景下,.windows 配置根本不起作用,得配 terminal.integrated.defaultProfile.linux。
- 检查是否被覆盖:按
Ctrl + Shift + P→ 输入Developer: Toggle Developer Tools→ Console 标签页运行localStorage.getItem('terminal.integrated.defaultProfile'),看返回值是不是你设的字符串 - 如果返回
null或别的值,说明配置没加载,或者被更高优先级设置覆盖 - Git Bash 启动后不读
~/.bashrc?加"args": ["--login", "-i"],否则cd c:/xxx会报错,别名也不生效


















