远程 ssh 下 vs code 终端配置不生效,需先执行“kill current vs code server”再重载窗口,否则 vscode-server 复用旧配置;改 shell 需同时配置 profiles 和 defaultprofile 且名称严格一致;path 不更新需检查 shell 初始化文件是否被加载。

远程 SSH 连接下,VS Code 终端配置不生效?先杀 server 再 reload
远程终端配置(比如改了 terminal.integrated.defaultProfile.linux)不生效,不是终端没重启,而是背后的 vscode-server 进程还在用旧配置运行。直接关终端窗口、新开一个,完全没用。
- 按
Ctrl+Shift+P打开命令面板,输入并执行Kill Current VS Code Server(注意不是 “Kill Terminal”) - 等几秒看到右下角提示 “Server terminated”,再按
Ctrl+R或点击菜单 Developer → Reload Window - 重连后,
vscode-server会重新拉起,此时所有终端配置(Shell 路径、启动参数、环境变量)才真正加载
这步常被忽略——很多人以为“关终端→新开终端”就等于重启,其实只是复用了旧 server 的会话上下文,连 $SHELL 都还是上一次启动时读取的值。
本地或远程终端卡死/无响应?别硬等,用 Ctrl+C + 关闭 + 重开三连
终端里跑着 Python 服务、Vue 开发服务器或 npm run dev 时,按 Ctrl+C 并不能总可靠终止进程,尤其遇到信号被子进程吞掉、或终端本身失去响应的情况。
- 先试
Ctrl+C:对大多数前台进程有效,但无法处理僵尸子进程或挂起的 TTY - 如果没反应,直接点终端右上角 × 关闭该 tab(不是最小化),或按
Ctrl+Shift+W - 再按
Ctrl+`新建终端——注意:这是全新 shell 实例,PATH、pwd、venv 状态都重置了
不要试图在“假死”终端里敲命令或反复按 Ctrl+C,大概率白费时间;关闭 + 重开是 VS Code 终端最干净的“软重启”方式。
改了终端配置却还是启动 PowerShell / bash?检查 profiles 和 defaultProfile 是否匹配
VS Code 自 1.56 起弃用了 terminal.integrated.shell.*,现在必须同时定义 profiles 和显式指定 defaultProfile,否则 fallback 到系统默认,且不报错。
- 打开
settings.json,确认你写了类似这样的结构(以 Linux 远程为例):{"terminal.integrated.profiles.linux": {"zsh": {"path": "/usr/bin/zsh"}}, "terminal.integrated.defaultProfile.linux": "zsh"} - 路径必须真实存在:
/usr/bin/zsh≠zsh(后者会被 shell 搜索机制绕过,可能意外落到/bin/sh) - profile 名(如
"zsh")和defaultProfile值必须**完全一致**,包括大小写和空格
常见坑:只改了 profiles 忘了设 defaultProfile,或者 profile 名写成 Zsh 但 default 写成 zsh,VS Code 就静默回退到系统默认 Shell。
为什么重启终端后 PATH 还是旧的?环境变量不会自动继承,得靠 shell 初始化文件
VS Code 终端启动时,只执行一次 shell 的 login 初始化(如 ~/.zshrc),不会动态 reload。改了 $PATH 或装了新工具(如 pyenv、nvm),新开终端也不一定立刻生效。
- 检查你的
~/.zshrc或~/.bashrc是否真被加载:新开终端后运行echo $PATH,对比终端外的echo $PATH - 如果不同,说明 VS Code 没走 login shell 流程——在
settings.json中给 profile 加"args": ["-l"]强制 login 模式 - 某些远程环境(如 WSL2、容器)中,
~/.profile可能比rc文件优先级更高,记得同步更新
最隐蔽的问题:你以为改了配置,其实是 shell 没读到它;VS Code 不负责帮你 debug shell 启动逻辑,它只负责调用你指定的程序。










