terminal.integrated.cwd 必须设为绝对路径或基于工作区的相对路径,仅在新建终端时生效且支持${workspaceFolder}等有限变量;填"${fileDirname}"无效,多根工作区取活动根,Git Bash需加"--no-cd"参数避免覆盖。

terminal.integrated.cwd 必须设为绝对路径或基于工作区的相对路径
VSCode 不会把 terminal.integrated.cwd 当作动态模板来解析,它只在新建终端时读取一次,且仅支持有限变量:${workspaceFolder}、${userHome}、${env:HOME} 等。写成 "./src" 或 "${fileDirname}" 是无效的——前者会被当作相对于工作区根的路径(合法),后者则被当字面字符串处理,终端启动后实际卡在用户主目录。
常见错误是直接填 "${fileDirname}",结果新开终端总在 ~;或者填了相对路径但没确认当前是否已通过「Open Folder」打开工作区,导致 ${workspaceFolder} 展开失败而回落到系统默认路径。
- 必须先用「File → Open Folder」打开项目根目录,否则
${workspaceFolder}为空,设置退化为未配置状态 - Windows 上路径分隔符用正斜杠
/更稳妥,比如"C:/Projects/my-app";双反斜杠\也行,但容易漏写 - 多根工作区下,
${workspaceFolder}指的是当前「活动的」那个根文件夹,不是所有根的并集
该设置只对新终端生效,已有终端不会自动更新
改完 terminal.integrated.cwd 后,已打开的终端不会跳转路径,也不会响应设置变更。这是最常被忽略的一点:很多人以为保存设置就“立刻生效”,结果还在旧终端里 cd 手动切目录。
必须关闭当前终端(点垃圾桶图标),再点 + 新建一个,才会以新配置的路径启动。
- 快捷键
Ctrl+Shift+`(反引号)每次触发的都是「新建终端」,所以它受terminal.integrated.cwd控制 - 如果想保留已有终端内容又切到目标路径,得手动执行
cd ${workspaceFolder},或者用命令面板运行Terminal: Change Directory - 终端右上角显示的当前路径,就是它真实的工作目录,别只看 shell 提示符前缀——有时提示符被主题或 oh-my-zsh 覆盖了
工作区设置优先于用户设置,多项目要各自配
全局设置(User Settings)里的 terminal.integrated.cwd 对所有项目都起作用,看似省事,但一旦你同时维护前端、后端、工具脚本多个项目,它们的根目录不同,统一设死就会互相干扰。
正确做法是在每个项目根目录下建 .vscode/settings.json,单独写入路径:
{
"terminal.integrated.cwd": "${workspaceFolder}"
}
这样每个项目打开时,终端默认就在自己根目录;切换项目,终端路径自动切换。如果你希望进某个子目录(如 ./client),直接写 "${workspaceFolder}/client" 即可。
- 不要在用户设置里写死绝对路径(如
"C:/dev/my-app"),那会让其他项目也跳过去 -
.vscode/settings.json默认不被 Git 跟踪,如需共享配置,可加进项目 README 并提示团队成员启用 - 如果项目用了 monorepo 结构(如 pnpm workspace),建议按 package 级别设
terminal.integrated.cwd,而不是整个仓库根
Git Bash 等第三方 Shell 可能绕过 cwd 设置
在 Windows 上用 Git Bash 时,即使你设了 "terminal.integrated.cwd": "${workspaceFolder}",终端仍可能启动在 /c/Users/xxx。这是因为 Git Bash 自带启动参数(比如 --cd-to-home)会覆盖 VSCode 的路径指令。
解决方法是检查 VSCode 的终端 profile 配置,确保没有额外传参:
"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "C:\Program Files\Git\bin\bash.exe",
"args": ["--no-cd"] // 关键:禁用 Git Bash 自动 cd 行为
}
}
- 不加
"args": ["--no-cd"],Git Bash 会无视terminal.integrated.cwd,坚持回用户家目录 - PowerShell 和 CMD 一般不受影响,但若你自定义了
$PROFILE并写了cd命令,也会抢在 VSCode 设置之前执行 - 验证是否生效:新开终端后立即执行
pwd(Linux/macOS)或cd(Windows),看输出是否为你预期的路径
+。


















