在 macOS 中修改 Hosts 文件需管理员权限,可用 nano、vim、VS Code 或 SwitchHosts! 四种方式:前两者通过终端命令编辑并刷新 DNS 缓存;VS Code 需配置 code 命令并以 root 权限运行;SwitchHosts! 提供可视化多方案管理与自动写入。

如果您需要在 macOS 系统中修改 Hosts 文件以实现域名映射、本地开发环境调试或屏蔽特定网站,则需直接编辑系统级的 /etc/hosts 文件。该文件默认受系统保护,需使用管理员权限操作。以下是具体执行步骤:
一、通过终端使用 nano 编辑器修改 Hosts 文件
macOS 自带 nano 文本编辑器,轻量且适合快速编辑,无需额外安装工具。使用 sudo 权限调用 nano 可直接打开并修改受保护的 hosts 文件。
1、打开“终端”应用程序(可通过 Spotlight 搜索 Terminal)。
2、输入命令:sudo nano /etc/hosts,然后按回车键。
3、系统提示输入当前用户的管理员密码,输入时无可见字符显示,输完直接按回车。
4、光标定位到文件末尾(可按 Ctrl + _,再输入 999 回车快速跳转至最后一行)。
5、输入自定义映射规则,格式为:IP地址[Tab或空格]域名,例如:127.0.0.1 dev.local。
6、按 Ctrl + O 保存,回车确认文件名;再按 Ctrl + X 退出编辑器。
7、刷新 DNS 缓存以使更改立即生效:执行命令 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。
二、通过终端使用 vim 编辑器修改 Hosts 文件
vim 是 macOS 预装的高级文本编辑器,支持高效键盘操作,适合熟悉 vi 模式的技术人员。其编辑流程与 nano 不同,需注意模式切换。
1、在终端中执行:sudo vim /etc/hosts,按回车后输入管理员密码。
2、进入 vim 后,默认为命令模式,按 i 键切换至插入模式。
3、将光标移至文件末尾,添加新条目,格式为:127.0.0.1 test.example.com。
4、按 Esc 键退出插入模式,返回命令模式。
5、输入 :wq(冒号+w+q),按回车保存并退出。
6、执行 DNS 刷新命令:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。
三、使用第三方图形化编辑器(如 VS Code)配合 sudo 权限修改
部分开发者偏好图形界面编辑器的语法高亮与多行编辑能力。VS Code 可通过命令行工具 code 调用,并借助 sudo 提权访问系统文件。
1、确保已安装 VS Code 并在终端中配置了 code 命令(通过菜单“Shell Command: Install 'code' command in PATH”启用)。
2、在终端中运行:sudo code --user-data-dir=/tmp/vscode-hosts-root /etc/hosts。
3、VS Code 将以 root 权限打开 hosts 文件,此时可直接编辑、保存,无需额外权限确认。
4、保存后关闭编辑器,再执行 DNS 刷新命令:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。
四、使用专用 Hosts 管理插件(SwitchHosts!)进行可视化管理
SwitchHosts! 是开源跨平台工具,支持多组 Hosts 方案切换、备份、同步与一键启用,适用于频繁切换开发环境的用户。
1、从官网 https://github.com/oldj/SwitchHosts/releases 下载最新 macOS 版本(.dmg 文件)。
2、挂载镜像,将 SwitchHosts! 拖入 Applications 文件夹。
3、首次启动时,系统提示“无法验证开发者”,需前往“系统设置 > 隐私与安全性”,点击“仍要打开”。
4、启动后点击左上角“+”号添加新方案,输入名称(如“Local Dev”)及 Hosts 内容,每行格式必须为 IP + 空格 + 域名。
5、选中该方案,点击工具栏“启用”按钮,SwitchHosts! 将自动获取 root 权限写入 /etc/hosts 并刷新 DNS。










