必须彻底删除 settings.json 中所有 terminal.external.* 配置项(含键名、值及末尾逗号),并重置 terminal.integrated.defaultProfile 等相关设置;外部终端失效还可能因 shell 配置文件中存在无条件 cd/exec/exit 命令,或 VS Code 未继承正确 shell 环境——需通过 code . 启动以确保环境变量完整加载。

terminal.external 配置被手动改过,必须删干净
你如果在 settings.json 里写过类似 "terminal.external.windowsExec" 或 "terminal.external.osxExec" 这类键,哪怕只配了一次,VS Code 就会把它当“已明确配置”并忽略系统默认行为。重置不是改回空字符串,而是彻底删掉整行——包括键名、冒号、值、末尾逗号(如果它前面有其他配置项的话)。
操作步骤:
- 按
Ctrl + Shift + P→ 输入Preferences: Open Settings (JSON)回车 - 查找所有含
terminal.external的行,整行删除(不要留空值或null) - 保存文件,关闭所有 VS Code 窗口(不是仅关窗口,要杀进程),再重新打开
内置终端的 defaultProfile 错误覆盖了外部终端逻辑
很多人以为改了 terminal.integrated.defaultProfile 只影响内置终端,其实它会间接干扰外部终端调用路径:VS Code 在找不到有效内置终端 profile 时,会 fallback 到外部终端启动逻辑,但若这个配置存在却指向一个无效路径(比如已卸载的 Git Bash),整个终端链路就卡死,连外部终端按钮都不响应。
安全做法是重置 profile 相关全部设置:
- 按
Ctrl + ,打开 UI 设置 - 搜索
terminal.integrated.defaultProfile→ 点击右侧齿轮 →Reset Setting - 同样重置
terminal.integrated.profiles和terminal.integrated.defaultProfile.linux(或对应平台字段)
外部终端没反应?检查是否被 shell 启动参数劫持
VS Code 外部终端(比如点击菜单 Terminal → Run Active File in External Terminal)依赖系统原生 shell 启动能力。如果你在 shell 配置文件(~/.zshrc、~/.bash_profile)里加了 cd、exec 或 exit 类命令,外部终端进程可能刚启动就被终止,表现为“点一下没反应”或“闪退”。
临时验证方法:
- 在系统终端中运行:
zsh -l -c "echo test"(macOS/Linux)或powershell -Command "Write-Host test"(Windows) - 如果这一步失败,说明问题出在 shell 初始化流程,不是 VS Code 配置问题
- 重点检查配置文件末尾有没有无条件执行的
cd、exec、return或未包裹在if [[ $- == *i* ]]中的交互式逻辑
重置后仍调用错终端?确认 VS Code 启动方式
从桌面图标、开始菜单或 Dock 直接启动 VS Code,它的环境变量快照是“冷启动”的,不会继承你当前终端里的 PATH、nvm 或 shell 配置。这意味着即使你系统终端能跑 git bash,VS Code 主进程也可能根本找不到它。
可靠做法只有这一种:
- 关掉所有 VS Code 实例
- 在系统终端中执行:
code .(macOS/Linux)或code(Windows PowerShell/CMD) - 这样启动的 VS Code 会完整继承当前 shell 环境,外部终端才能正确识别已安装的 shell 可执行文件
别指望改完配置点一下“重载窗口”就生效——外部终端路径绑定发生在主进程初始化阶段,不重启进程,旧环境就一直挂着。


















