terminal.integrated.env.*是唯一可靠方式:按平台键名写入settings.json,path须用${env:path}安全追加,改后需关闭所有终端再新建才生效。

VSCode 内置终端不自动加载 ~/.zshrc、~/.bash_profile 或 Windows 系统 Path,所以 npm、rustc、python 常报 “command not found”——这不是配置漏了,是启动模式本身就不读这些文件。
terminal.integrated.env.* 是唯一可靠注入环境变量的方式
VSCode 在终端进程 fork 出来前就注入变量,绕过 shell 初始化流程,优先级高于系统值,且支持安全追加。
- 必须按平台写键名:
terminal.integrated.env.osx(macOS)、terminal.integrated.env.linux(Linux)、terminal.integrated.env.windows(Windows),写成darwin或win32会完全失效 -
PATH值里必须显式引用原始路径:"PATH": "/opt/homebrew/bin:${env:PATH}"(macOS/Linux)或"PATH": "C:/Program Files/nodejs;${env:PATH}"(Windows,推荐正斜杠免转义) - 改完 settings.json 后,要关闭所有已打开的终端 tab,再新建——热重载不触发环境重载
- 该配置只影响集成终端,
tasks.json和调试器仍需单独设options.env
terminal.integrated.cwd 控制默认工作目录,不是靠快捷键
没有“快捷键设置工作目录”这回事;所谓“快捷键逻辑”其实是误传。真正生效的是 terminal.integrated.cwd 这个配置项,它决定新终端一打开就 cd 到哪。
- 设为
"${workspaceFolder}":每次都在当前工作区根目录启动,适合项目开发 - 设为
"${fileDirname}":只在有文件打开时生效,进到该文件所在目录;没开文件时 fallback 到用户主目录 - 子终端(split)行为由
terminal.integrated.splitCwd控制:"initial"表示继承父终端路径,"workspaceRoot"强制回到工作区根 - 这个配置不会影响你按
Ctrl+`的频率,但能让你少敲一次cd ..
别碰 shellArgs -l 或 profiles.* 来“修复 PATH”
试图用 terminal.integrated.shellArgs.osx 加 ["-i", "-l"] 强制登录 shell,在 VSCode 1.84+ 已弃用,且副作用明确:
-
-l会重复执行~/.zshrc,可能卡在交互提示(比如 nvm 安装检测)、alias 冲突、PATH 被覆盖两次 - Windows 上对 PowerShell 几乎无效——PowerShell Core 默认就是登录模式,但环境仍来自注册表或
$PROFILE,不是 shell 文件 -
terminal.integrated.profiles.*仅当你重度依赖 oh-my-zsh 插件、pyenv 的 shell 函数时才考虑,否则纯属增加不可控变量
最易被忽略的一点:macOS GUI 应用(包括 VSCode)默认只读 ~/.zprofile,不读 ~/.zshrc。如果你把 export PATH 写在 ~/.zshrc 里,连系统终端都未必总生效——先确认那行 export 真正在 GUI 环境下被加载了,再决定要不要用 env.* 注入。











