确认当前终端profile:看顶部标签页名称(如powershell、git bash);更准确的是在设置中搜索terminal.integrated.defaultprofile,右侧显示值即生效profile名,注意平台后缀(如.windows)必须匹配且不能遗漏。

怎么确认当前终端用的是哪个 Profile
打开终端后看顶部标签页名称,比如 PowerShell、Git Bash 或 zsh,它反映的是当前终端实例所用的 profile 名(不是路径,也不是显示名)。更准的方法是:按 Ctrl + , 打开设置,搜索 terminal.integrated.defaultProfile,右侧显示的值就是当前生效的 profile 名——注意平台后缀必须匹配:.windows、.osx 或 .linux,漏掉或写错就无效。
为什么改了 defaultProfile 还是打开旧 Shell
常见原因有三个:
- 已有终端实例不会重载配置,必须关掉所有终端标签页(点右上角垃圾桶图标),再按
Ctrl + Shift + `新建 - 工作区设置了同名字段:检查项目根目录下是否有
.vscode/settings.json,里面若含"terminal.integrated.defaultProfile.windows",它会直接覆盖用户级设置 -
defaultProfile的值和profiles中定义的 key 不一致——VSCode 只认 key 名,不识别路径或显示名。比如你注册了"Git Bash": { "path": "C:\Program Files\Git\bin\bash.exe" },那defaultProfile就必须写"Git Bash",大小写、空格、括号都得一模一样
手动注册 Git Bash / WSL / zsh 等非自动识别的 Shell
VSCode 自动检测不到时,得自己在 settings.json 里补全 profiles 定义:
- Git Bash 要加
--login -i参数,否则启动黑屏或报/dev/tty错误:"args": ["--login", "-i"] - WSL 必须指定发行版名,且和
wsl -l -v输出严格一致,比如"args": ["-d", "Ubuntu-22.04"] - macOS 上想确保加载
.zshrc,args得加-l(login shell):"args": ["-l"] - 路径含空格必须整个用双引号包裹,例如:
"path": "C:\Program Files\Git\bin\bash.exe",否则静默 fallback 到 PowerShell
终端起始目录不随工作区切换?
默认终端总从用户主目录启动,是因为没配 terminal.integrated.cwd。加这一行就能解决:
"terminal.integrated.cwd": "${workspaceFolder}"
这个变量会自动适配:
- 打开文件夹时 → 指向该工作区根目录
- 只打开单个文件时 → 退化为
${fileDirname} - 完全没打开任何东西时 → 回落到用户主目录
别写死路径,也别用 ~ 或 %USERPROFILE%,JSON 不解析这些;Windows 用户路径分隔符写 / 或 \ 都可以,但单个 会破坏 JSON 结构。











