之前『Windows 修改 Hosts』介绍了如何在 Windows 平台修改 Hosts,今天来聊聊如何在 macOS 平台修改 Hosts。
首先依然是找到 Hosts,macOS 系统的 Hosts 文件路径为 Macintosh HD/private/etc/hosts
:

由于系统文件管理器『Finder』并不会像 Windows 一样方便地从『此电脑』进入,所以我们其实还能通过『Finder』菜单「前往文件夹」功能直接进入。

在「前往文件夹」中输入 /etc/hosts
并点击「前往」即可直达。

找到 Hosts 后依然可以通过任何文本编辑器对其进行修改,但需要注意,etc
文件夹的默认权限为「只读」:

当你尝试修改 Hosts 文件时,系统会弹出如下提示:

我们可以将 Hosts 文件复制到桌面进行修改,修改完成后再复制到原目录下覆盖即可,覆盖时会要求输入密码或触控 ID,都是为了防止用户误操作。

既然是 etc
文件夹权限原因,我们还可以通过修改该文件夹的权限来直接编辑 Hosts 文件。

将 etc
文件夹中「everyone」的权限设置为「读与写」便可直接编辑 Hosts 文件,编辑完成后记得要将该权限改回来。
既然都用上 Mac 了,那就再介绍一个比较 Geek 的修改方式,用命令来修改。
打开『Terminal』,输入命令:
➜ sudo vi /etc/hosts
其中 sudo
表示以系统管理者的身份执行指令,由于默认情况下用户对 etc
目录的权限为「只读」,而「系统」的权限为「读与写」,所以通过该命令可以得到写权限,vi
则表示要编辑,后面就是 Hosts 文件路径。
执行该命令后,会要求输入本机密码,输入完成并回车就可以直接在『Terminal』中对 Hosts 文件进行编辑。
编辑需要用到 vi
命令,也不是很复杂,通过方向键移动光标,键入 i
代表插入(INSERT),随即进入编辑模式,编辑完成后,点击 Esc
退出编辑,再键入 :wq
并回车执行保存退出,Hosts 文件即修改完成。
除了 vi
,我们也可以用 nano
来修改,同样在『Terminal』中输入命令:
➜ sudo nano /etc/hosts
执行完后同样要求输入密码进入编辑模式,同时『Terminal』底部还会展示快捷键介绍,似乎比 vi
要方便一些。

进入后不再需要其他命令,可直接编辑模式,编辑完成后点击 Control
+ O
保存,提示「File Name to Write: /etc/hosts」,回车确认,再按 Control
+ X
退出。
当你有大量的 Hosts 内容需要添加时,用上面这两个命令似乎并不是怎么方便,而修改文件夹权限或者文件副本却又一点都不 Geek,那可以考虑另一种方式。
先将需要追加的 Hosts 内容写到一个文件中,比如「hosts.txt」,然后执行命令:
➜ sudo -s
➜ cat ~/hosts.txt>>/etc/hosts
cat
命令用于在末尾追加,>>
前面的是我们需要追加的 Hosts 内容文件路径,比如我这里就放在当前用户目录中,>>
后面的是源 Hosts 文件的路径,这样就能够将 Hosts 从一个文本文件中追加到系统 Hosts 文件中。
以上就是 macOS 修改 Hosts 的五种方法,同 Windows 一样,修改了 Hosts 文件后也有可能会出现不立马生效的情况,同样是需要刷新 DNS 缓存:
➜ sudo killall -HUP mDNSResponder
与 Windows 平台的命令是不一样的,由于使用了 sudo
所以同样要输入本机密码。
最后附上 macOS 平台下原始的 Hosts 文件内容:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
基本与 Windows 平台下一致,只不过将几个 localhost
取消了注释罢了,如果怀疑你的 Hosts 文件被病毒或木马修改,可复制以上内容修复 Hosts 文件。