Locahl
获取 Locahl
hosts 文件macOS教程终端本地开发

在 Mac 上编辑 hosts 文件:Terminal vs GUI(2026)

如何在 macOS 上无误编辑 /etc/hosts?Terminal(sudo nano)与 GUI 对比。2 分钟内解决 permission denied 和 DNS 缓存问题。

L

Locahl Team

·更新于 ·3分钟阅读

无需终端,管理 hosts 文件

Locahl 让您在 Windows、macOS 和 Linux 上可视化管理环境,支持自动 DNS 刷新和备份。

在 Mac 上编辑 hosts 文件是开发者的常见任务,但权限问题、需要记忆的命令和 DNS 缓存刷新往往令人沮丧。本指南介绍两种主要方法:经典的 Terminal 方式和带图形界面的现代替代方案。

为什么要在 Mac 上编辑 hosts 文件?

hosts 文件允许你在 Mac 本地将域名重定向到特定 IP 地址。最常见的使用场景:

本地 Web 开发

  • 创建如 myproject.local 的自定义域名
  • 模拟多域名环境
  • 上线前测试配置

测试与调试

  • 将生产域名指向 staging 服务器
  • 在修改正式 DNS 前测试服务器迁移
  • 隔离服务以便调试

网站拦截

  • 拦截分散注意力的网站
  • 在系统层面拦截广告

Terminal 方式:sudo nano /etc/hosts

这是开发者使用数十年的传统方法。

步骤 1:打开 Terminal

在 Mac 上打开 Terminal 的几种方式:

  • Spotlight:按 Cmd + Space,输入「Terminal」,回车
  • Finder:应用程序 > 实用工具 > Terminal
  • 启动台:在应用网格中搜索 Terminal

步骤 2:用 nano 打开文件

输入以下命令并回车:

BASH
sudo nano /etc/hosts

系统会要求输入管理员密码。输入时屏幕上不显示字符,这是正常的,输入后按 Enter。

步骤 3:编辑文件

你会看到 hosts 文件的当前内容,默认类似:

BASH
##
# Host Database
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

用方向键移到文件末尾,添加你的条目:

BASH
# My local projects
127.0.0.1       myproject.local
127.0.0.1       api.myproject.local

步骤 4:保存并退出

  • Ctrl + O 保存
  • Enter 确认
  • Ctrl + X 退出 nano

步骤 5:刷新 DNS 缓存(关键)

这一步常被遗忘。不执行的话,修改可能不会生效。

BASH
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder
延伸阅读Mac 刷新 DNS:按 macOS 版本完整指南

Terminal 常见问题

「Permission denied」

原因:命令前忘记加 sudo

解决:使用 sudo nano /etc/hosts

修改不生效

原因:未刷新 DNS 缓存。

解决:始终执行 DNS 刷新命令。

语法错误

原因:条目格式不正确。

解决:遵循 IP[TAB 或空格]域名 格式。

条目多时文件难以阅读

原因:数十条条目时,查找特定行变得繁琐。

解决:用注释分组,或改用 GUI 方案。

GUI 方式:图形界面

对于想避免 Terminal 或管理大量条目的用户,GUI 能显著简化工作流。

相比 Terminal 的优势

  • 无需记忆命令
  • 自动验证 IP 地址
  • 即时搜索条目
  • 可视化组织(拖放)
  • 启用/禁用条目而不删除
  • 每次修改前自动备份
  • 内置一键 DNS 刷新

Locahl 的使用方式

1. 启动应用 — 界面显示当前所有 hosts 条目 2. 添加条目 — 填写 IP、域名,可选注释 3. 验证 — 应用检查语法并应用修改 4. 刷新 DNS — 一键清除缓存

高级功能

环境管理 创建条目组(Dev、Staging、Production),一键切换。

JSON 导入/导出 与团队分享配置。

历史与备份 每次修改自动创建备份。

对比:Terminal vs GUI

标准Terminal (nano)GUI (Locahl)
学习曲线中等
管理 50+ 条目困难容易
语法验证手动自动
DNS 刷新单独命令内置
备份手动自动
费用免费€4.99(一次性)

验证修改是否生效

修改 hosts 文件并刷新 DNS 缓存后:

用 ping 测试

BASH
ping myproject.local

预期结果:

PING myproject.local (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.042 ms

在浏览器中测试

在浏览器中打开 http://myproject.local

高级故障排除

Mac 上 .local 域名较慢

macOS 对 .local 域名使用 Bonjour(mDNS),可能造成延迟。

解决:改用 .test 或 .localhost,而非 .local。

浏览器忽略 hosts 文件

部分浏览器有独立 DNS 缓存。

解决

  • Chrome:chrome://net-internals/#dns,然后「Clear host cache」
  • Firefox:about:networking#dns,然后「Clear DNS Cache」

日常使用最佳实践

若经常编辑 /etc/hosts,应将其视为项目配置,而非随意的系统文件。

  • 在每个分组前添加注释。
  • 本地开发使用 .test 域名。
  • 生产域名覆盖保持临时性。
  • 需要时同时添加 127.0.0.1::1
  • 批量导入前备份。
  • 每次修改后刷新 DNS。
  • Chrome 忽略更新时清除 Chrome DNS 缓存。

示例:

TEXT
# Client: Acme
127.0.0.1 app.acme.test
127.0.0.1 api.acme.test
::1       app.acme.test
::1       api.acme.test

# Temporary migration - remove after launch
203.0.113.50 www.example.com

团队工作流

团队应避免在聊天中发送原始片段,而应:

  • 维护所需本地域名的文档列表。
  • 用 Locahl 导出/导入 hosts 配置。
  • 团队统一命名规范。
  • 在入职文档中包含 hosts 设置说明。
  • 为临时迁移条目添加回滚说明。

这可避免经典 bug:一人测 api.local,另一人测 api.test,却没人访问同一服务。

结论

在 Mac 上编辑 hosts 文件是每位开发者的必备技能。Terminal 方式仍适合一次性修改,但日常管理时,Locahl 等图形界面能节省时间、减少错误。

无论选择哪种方式,切记:使用 sudo、检查语法、刷新 DNS 缓存。

想深入了解,请查看我们的 hosts 文件完整指南,或学习如何 用 hosts 文件拦截广告

分享本文
支持 Windows、macOS 和 Linux

准备好简化您的工作流了吗?

别再浪费时间在终端上。Locahl 让您几次点击即可管理 hosts 文件,自动验证,避免出错。

  • 直观的可视化界面
  • 一键 DNS 刷新
  • 多环境管理
  • 自动备份
  • JSON 导入/导出
获取 Locahl€4.99一次性购买,无订阅

读者评价

4.7(3 条评价)
James T.

"非常实用的文章!Terminal 与 GUI 的对比让我决定改用可视化方案。"

2025年11月15日

Emily W.

"终于有一篇清楚解释为什么我的修改不生效的指南。问题出在 DNS 刷新!"

2025年12月28日

Ryan M.

"好文章,希望有更多 Apache Virtual Hosts 的细节,否则非常完整。"

2026年1月12日

常见问题

如何在 Mac 上打开 hosts 文件?

在 Terminal 中执行:sudo nano /etc/hosts。需要输入管理员密码。也可使用 Locahl 等 GUI 应用,避免使用 Terminal。

为什么编辑 hosts 文件需要 sudo?

/etc/hosts 是受保护的系统文件,只有 root 用户可修改。sudo 命令会临时授予 root 权限。

如何在 nano 中保存修改?

在 nano 编辑器中,按 Ctrl+O 保存(Write Out),再按 Enter 确认,然后按 Ctrl+X 退出。

修改后如何刷新 DNS 缓存?

执行:sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder。此命令适用于 macOS Monterey 及更高版本。

Mac 上有 hosts 文件的 GUI 吗?

有。Locahl 等应用提供可视化界面管理 hosts 文件,无需 Terminal,并带自动验证和内置 DNS 刷新。

相关文章