terminal.integrated.cwd未生效的主因是配置作用域错误、${workspaceFolder}变量展开失败(未Open Folder)、shell初始化脚本中cd命令覆盖,或远程路径映射错位。

terminal.integrated.cwd 配置未生效
这是最常见原因:你写了 "terminal.integrated.cwd": "${workspaceFolder}",但终端仍启动在 ~ 或 C:UsersYourName。问题往往出在配置作用域或变量展开失败。
- 检查 settings.json 是用户级还是工作区级——多根工作区下,只有工作区
settings.json中的配置才对当前文件夹生效 -
${workspaceFolder}在未通过「文件 → 打开文件夹」加载项目时为空,VSCode 会 fallback 到$HOME;此时应改用绝对路径(如"terminal.integrated.cwd": "/path/to/project") - Windows 上若路径含空格或中文,必须用双反斜杠或正斜杠,
"C:my project"会解析失败,应写成"C:\my project"或"C:/my project"
shell 初始化脚本主动覆盖了初始路径
VSCode 启动终端后,会加载你的 .zshrc、.bashrc 或 .profile。如果里面写了 cd ~、cd $HOME 或无条件 cd,它就会立刻把路径切走,盖过 VSCode 设置的初始目录。
- 搜索这些文件中是否含
cd命令——尤其注意注释掉的旧调试语句,比如# cd ~/dev,某些 shell 仍会执行带#的行(极少见但存在) - macOS 用户重点查
.zprofile,因为 zsh 默认优先读它;Linux Bash 用户注意.bash_profile会屏蔽.bashrc - 临时验证:终端启动后立即运行
ps -p $PPID -o args=(macOS/Linux)或看任务管理器命令行参数,确认是 VSCode 启动的 shell,而非被其他进程劫持
Code Runner 或调试器 cwd 与终端不一致
很多人以为“终端路径对了,代码就能跑”,结果 Ctrl+Alt+N 运行 Python 仍报 FileNotFoundError。这是因为 Code Runner 和调试器(F5)完全不读 terminal.integrated.cwd,它们有自己独立的路径逻辑。
- Code Runner 默认以
${workspaceFolder}为工作目录,要改成当前文件所在目录,必须显式开启"code-runner.fileDirectoryAsCwd": true - 调试时 launch.json 中的
"cwd": "${fileDirname}"才生效;写成"./src"是错的——它相对于工作区根,不是当前文件 - 这两处配置改完无需重启 VSCode,但必须保存设置并新建终端/重新运行,旧终端实例不会自动刷新 cwd
远程开发(WSL/SSH)路径映射错位
在 WSL 或 SSH 连接中,VSCode 的 ${workspaceFolder} 展开的是远程路径(如 /home/user/project),但终端可能因挂载方式或 shell 配置,实际落在 /mnt/c/Users/... 或空路径。
- WSL 下务必用
code .(Linux 路径)启动,不要用code /mnt/c/...;后者会让 VSCode 误判为 Windows 工作区 - SSH 远程连接时,检查 Remote Explorer 中工作区路径是否显示正确;若显示
undefined,说明远程 VS Code Server 未正确识别文件系统 - 某些 Linux 发行版(如 Ubuntu on WSL2)默认启用 systemd user session,会干扰 shell 环境变量继承,可尝试在
~/.bashrc开头加export SHELL=/bin/bash强制指定
终端路径问题从来不是单一配置能一劳永逸的。真正麻烦的是它横跨 VSCode 设置、shell 生命周期、扩展行为和远程协议四层,而每一层都可能悄悄覆盖上一层的结果。最容易被忽略的,是 shell 初始化脚本里那行看似无害的 cd ——它不报错,不警告,只在每次新终端弹出时,默默把你踢回老家。


















