快速修复
# 一键:卸载前先备份共享配置(唯一后悔药)
cp ~/.claude.json ~/.claude.json.bak
完整卸载 = 删包 + 删工具配置目录 + 手动还原共享配置段。
你会遇到什么
卸载工具后残留问题仍在:共享配置没还原(之前被工具改写的 ~/.claude.json / ~/.codex/config.toml 保持切换后的状态);命令仍在(卸载后 ccr / cc-switch 仍能解析,或重装后配置还是旧的)。卸了等于没卸干净。
本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。
为什么会这样
卸载命令只删工具自身(dpkg -r / npm rm -g + 工具自己的配置目录),不还原它改过的共享配置文件;shell hash 缓存会让已卸载的命令继续命中。
卸载 ≠ 还原:卸载程序(dpkg -r / npm rm -g)只删除它自己声明拥有的文件(二进制、库、自己的配置目录),不会还原它安装时改过的共享配置文件(如追加过配置项的系统级文件、PATH 写入、启动器注册)。所以「卸载后还在影响系统」是常态而不是异常。
shell hash 缓存是第二层:bash 会把命令路径缓存在内存里,已卸载的命令在同一个 shell 会话里仍可能被命中执行(新开终端才消失)。
确定性推论:卸载后残留影响按两个方向查——文件层(which <cmd>、dpkg -l | grep、配置目录)和环境层(PATH、shell hash:hash -r 清缓存);「卸载了还能跑」先 hash -r 或开新终端排除缓存,再查 PATH 里的残留文件;判断路径:同一终端能跑/新终端不能 = hash 缓存,两边都不能 = 文件残留。
一步步来
1. 卸载前备份共享配置 — 必做
cp ~/.claude.json ~/.claude.json.bak
同理 ~/.codex/config.toml、~/.claude/settings.json。
2. 完整卸载 = 删包 + 删工具配置目录 — 必做
cc-switch:
dpkg -r cc-switch && rm -rf ~/.cc-switch
claude-code-router:
npm rm -g @musistudio/claude-code-router && rm -rf ~/.claude-code-router
3. 手动还原共享配置段 — 必做
还原 provider 段 / ANTHROPIC_* 路由注入段,或按备份还原;共享文件不代删(其它工具也在写)。
4. 新 shell 验证 — 必做
command -v ccr
应为空;重装后配置应是新的。
怎么确认修好了
零残留验证(实测输出形态):
ccr uninstall 闭环:102 包移除 + 配置目录清除 → verify 零残留 exit=0(实测)
command -v ccr → 空其它环境的表现
| 环境 | 说明 |
|---|---|
| cc-switch | 卸载命令不含还原步骤(字符串审计);dpkg -r + rm -rf ~/.cc-switch |
| claude-code-router | npm rm + 删 ~/.claude-code-router;settings.json 路由注入段手动确认(实测闭环) |
| 共享配置 | 先备份再动手;不代删共享文件 |
| shell hash | 新 shell 验证 command -v |
症状
卸载工具后残留问题仍在:
- 共享配置没还原:之前被工具改写的
~/.claude.json/~/.codex/config.toml保持切换后的状态; - 命令仍在:卸载后
ccr/cc-switch仍能解析,或重装后配置还是旧的。
原因
卸载命令只删工具自身(dpkg -r / npm rm -g + 工具自己的配置目录),不还原它改过的共享配置文件;shell hash 缓存会让已卸载的命令继续命中。
解法
- 卸载前备份共享配置:
cp ~/.claude.json ~/.claude.json.bak(同理~/.codex/config.toml、~/.claude/settings.json)。 - 完整卸载 = 删包 + 删工具配置目录:cc-switch 用
dpkg -r+rm -rf ~/.cc-switch;claude-code-router 用npm rm -g @musistudio/claude-code-router+rm -rf ~/.claude-code-router。 - 手动还原共享配置段(provider 段 / ANTHROPIC_* 路由注入段)或按备份还原;共享文件不代删(其它工具也在写)。
- 新 shell 验证:
command -v ccr应为空;重装后配置应是新的。
受影响工具实例
- cc-switch:卸载 =
dpkg -r+rm -rf ~/.cc-switch,不含还原步骤(字符串审计);实测闭环。 - claude-code-router:npm 全局包 +
~/.claude-code-router配置目录;~/.claude/settings.json路由注入段需手动确认清理;桌面端 release 二进制走系统卸载,不在 npm 管理范围;实测闭环 2026-08-28(102 包移除 + 目录清除 + verify 零残留 exit=0)。
验证证据
- cc-switch:字符串审计确认管理面含
~/.claude.json/~/.codex/config.toml/ opencode.json;卸载命令不含还原步骤(manifest uninstall.note)。 - claude-code-router:实测闭环 2026-08-28:install exit=0 → uninstall(102 包移除 + 配置目录清除)→ verify 零残留 exit=0。
适用工具 (2)
本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。
cc-switchclaude-code-router来源与证据
← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡