如何在 Mac 上卸载 SwitchHosts
SwitchHosts 是一款免费开源的 hosts 管理和切换工具,来自 switchhosts.app 和它的 GitHub 项目。移除之前有两件事要先弄清楚。你配置的所有内容都在 ~/Library 之外的隐藏文件夹 ~/.SwitchHosts 里,README 列出了 manifest.json(hosts 树)、entries/(本地和远程 hosts 内容)、trashcan.json、internal/config.json(偏好设置)和 internal/histories/(历史),并说拷走整个文件夹才是完整的手动备份,应用内导出不含偏好设置和历史。另外,你应用某个方案时,SwitchHosts 会把内容写进系统文件 /etc/hosts,移除应用并不会撤销。本文覆盖项目 GitHub Release 的 arm64 磁盘映像和 Homebrew cask switchhosts。
先还原 hosts,再退出并移除应用
- 以后可能还要用这些方案的话,先把整个
~/.SwitchHosts文件夹拷到别处。它是隐藏文件夹,在访达里用 Shift + Command + G 打开。 - 在 SwitchHosts 里关掉你应用过的方案,再用
cat /etc/hosts看系统文件。macOS 原装的文件只有localhost和broadcasthost几行,还留着你不想要的行,就用有管理员权限的编辑器删掉,比如sudo nano /etc/hosts。 - 从托盘菜单退出 SwitchHosts,或按 Command + Q。测试里应用有 5 个进程,其中包括它的 WebKit 辅助进程。
- 打开访达,进入「应用程序」,把 SwitchHosts 拖进废纸篓。
README 里有开机启动的偏好设置,不过测试里 SwitchHosts 没有注册登录项,也没有启动代理。删掉之后它还在系统设置 › 通用 › 登录项与扩展里的话,在那里关掉。
数据在哪里
在访达按 Shift + Command + G 逐项打开,不存在的路径跳过即可。
| 位置 | 内容 | 处理建议 |
|---|---|---|
~/.SwitchHosts |
你所有的 hosts 方案、远程来源、偏好设置和历史,测试里 4 KB | 想留的话先拷出,再移除。Mole 会列出供审查,符合条件时默认勾选。 |
~/Library/Caches/net.oldj.switchhosts |
缓存 | 移除。Mole 默认勾选。 |
~/Library/Logs/net.oldj.switchhosts |
日志 | 移除。Mole 默认勾选。 |
~/Library/WebKit/net.oldj.switchhosts |
网页视图的存储,532 KB | 移除。Mole 默认勾选。 |
getconf DARWIN_USER_CACHE_DIR 和 getconf DARWIN_USER_TEMP_DIR 打印出的文件夹里的 net.oldj.switchhosts |
Mole 的两个临时缓存行,测试里都是空的 | 移除。Mole 默认勾选。 |
~/Library/Application Support/SwitchHosts、~/Library/Preferences/SwitchHosts.plist、~/Library/Saved Application State/SwitchHosts.savedState |
Homebrew cask 的 zap 清单里列了这些,测试时都不存在 | 你的 Mac 上有的话,先看里面是什么再移除。 |
检查结果
pgrep -il switchhosts
cat /etc/hosts
ls -d /Applications/SwitchHosts.app "$HOME/.SwitchHosts" "$HOME/Library/WebKit/net.oldj.switchhosts" "$HOME/Library/Caches/net.oldj.switchhosts"
pgrep没有输出,说明 SwitchHosts 没在跑。打印出一行就是还活着的进程,退出它,或者重启一次 Mac。cat /etc/hosts应该只剩你想保留的行。你用 SwitchHosts 应用过又不想要的内容,在手动删掉之前一直都在。ls -d提示「No such file or directory」说明那个路径已经没了,打印出路径说明还在盘上,选择保留方案的话~/.SwitchHosts还在是正常的。
用 Homebrew 安装时
brew uninstall --cask switchhosts
这个 cask 没有 uninstall 步骤,所以这条命令只移除应用。它的 zap 清单会把 ~/.SwitchHosts(你的 hosts 数据)连同缓存、日志、WebKit 文件夹、偏好设置文件、保存的窗口状态和 ~/Library/Application Support/SwitchHosts 一起移进废纸篓。brew uninstall --cask --zap switchhosts 不看 Mole 的勾选,也不会还原 /etc/hosts。~/.SwitchHosts 在 ~/Library 之外,所以 Mole 对这个 cask 从不加 --zap,你勾选的行由 Mole 自己移除。
Mole 会列出什么
Mole 默认勾选应用、缓存、日志、WebKit 文件夹和两个临时缓存行。~/.SwitchHosts 因为 cask 的 zap 清单里有它,会列出供审查,符合条件时默认勾选,想留着方案就取消勾选。Mole 不会动 /etc/hosts。移除之前 Mole 会请 SwitchHosts 退出。状态页把 SwitchHosts 显示成一行,Mole 找不到这个应用的更新渠道。
这次检查覆盖了什么
2026 年 11 月 9 日,在一台装着 macOS 26 的测试机上,这次检查从项目的 GitHub Release 取了 SwitchHosts 5.0.3(Apple 芯片)的磁盘映像,校验和与 Homebrew cask switchhosts 一致,没有运行 brew install,直接拷进「应用程序」,打开一次,再用源码构建、重新签名的 Debug 版 Mole 勾上所有审查行卸载,没有用 Mole 的公证发布版。Mole 把应用和 6 行移进了废纸篓,其中包括 ~/.SwitchHosts,没有失败项,重新扫描也没发现 SwitchHosts 的路径。测试只是启动了应用。状态页显示一行 SwitchHosts,5 个进程,Mole 没有找到更新渠道,也没有执行更新。应用方案、还原 /etc/hosts、远程 hosts 来源、Homebrew 和 Mole 公证发布版都没有测。
