vscode集成终端默认不从当前文件夹启动,而是继承系统shell路径;需设"terminal.integrated.cwd": "${workspacefolder}"并重启终端才生效。

VSCode 集成终端默认不从当前打开的文件夹启动,而是继承系统 shell 的初始路径(比如 $HOME 或 Windows 的用户目录),这是多数人困惑的根源。
终端默认路径由 terminal.integrated.cwd 决定
这个设置控制所有新打开的集成终端的起始工作目录。它不是“自动跟随当前文件”,而是一个静态配置项。
- 全局设置:在
settings.json中写"terminal.integrated.cwd": "/your/path",所有工作区都生效 - 工作区设置:在
.vscode/settings.json中设置,仅对该文件夹有效 - 值为
null(默认)时,终端会回退到系统默认路径;设为空字符串""则等价于null - 支持变量:
"${workspaceFolder}"、"${fileDirname}"、"${userHome}"—— 但注意:${fileDirname}在终端刚启动时尚未选中任何文件,不会生效
想让终端总在当前打开的文件夹下启动?用 "${workspaceFolder}"
这是最常用也最可靠的做法,尤其适用于单根工作区项目。
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入Preferences: Open Settings (JSON) - 添加或修改:
"terminal.integrated.cwd": "${workspaceFolder}" - 重启终端(关闭再点
+),新终端就会以当前工作区根目录为起点 - 如果打开了多根工作区(多个文件夹),
${workspaceFolder}指的是「活动的」那个根目录;未激活任何根时行为未定义,建议避免
为什么 terminal.integrated.defaultProfile 不影响路径?
这个设置只决定默认启用哪个 shell(如 bash、zsh、PowerShell),和工作目录完全无关。有人误以为换 profile 就能改路径,其实只是巧合——比如某些 PowerShell 配置里写了 cd 命令,那属于 shell 自身行为,不是 VSCode 控制的。
- Windows 上若用了 Git Bash,它的默认路径可能仍是
/c/Users/xxx,即使你设了${workspaceFolder},也要确认 Git Bash 的启动参数没覆盖它(比如--cd-to-home) - macOS/Linux 下 zsh/bash 的
~/.zshrc或~/.bashrc若含cd,会强行跳转,优先级高于 VSCode 设置 - 终端已启动后再改
cwd设置,对已有终端无效,只影响后续新建的终端
进阶:需要按文件位置动态切路径?得靠插件或任务
VSCode 原生不支持“每次打开终端都 cd 到当前编辑的文件所在目录”。硬要实现,有两个现实路径:
- 装插件,如
Terminal Here(提供右键菜单命令,在当前文件夹开终端) - 自定义任务 + 键盘快捷键:用
shellCommand扩展执行code --task terminal-cd类逻辑,但需额外配置且无法绑定到Ctrl+` - 别依赖这个需求——真正需要频繁切换目录的场景,往往说明项目结构或工作流该优化了
真正容易被忽略的是:设置改完后必须新开终端,旧终端不会刷新路径;还有,多根工作区下 ${workspaceFolder} 的“活动根”状态并不直观,有时需要手动点击侧边栏的文件夹名来激活。











