错误信息
Mac 上的“curl: (6) Could not resolve host”
curl 退出码 6 表示 curl 无法获取主机名对应的地址。curl 文档的说明是:“The given remote host was not resolved.”
症状
- “终端”显示
curl: (6) Could not resolve host: example.com。 - 使用 curl 的脚本和安装程序以退出码 6 中止。
- 同一地址在浏览器中能打开,或者在浏览器中也失败。
可能的原因
- 输入错误或主机名为空。脚本中的变量可能为空,导致 curl 拿到错误的名称。
- 没有连接或没有 DNS。Mac 无法连接到 DNS 服务器。
- VPN 使用自己的 DNS。公司内部名称只有在 VPN 打开时才能解析。
- curl 没有使用代理。在只允许通过代理上网的网络中,curl 需要代理设置,然后由代理来解析名称。
如何检查
打印出完整的命令,确认主机名正确。
通过 macOS 解析器查询该名称。
dscacheutil -q host -a name example.com直接询问公共 DNS 服务器。如果这里有结果而上一步没有,问题出在 DNS 设置上。
dig +short example.com @1.1.1.1显示 curl 读取的代理变量。
env | grep -i proxy带详细信息运行 curl。前几行显示的是查询过程。
curl -v https://example.com
如何修复
如果 macOS 查询也失败,请修复 DNS。请参阅Mac 上 DNS 无法解析。
如果网络需要代理,请为 curl 设置代理。
export https_proxy=http://proxy.example.com:8080对于公司内部名称,请先连接 VPN。
刷新 DNS 缓存,然后再试一次。请参阅在 Mac 上刷新 DNS 缓存。
使用 Kilobat
Kilobat 的连接诊断会逐层测试该名称:网络、代理、DNS、规则、IPv4、IPv6、TLS 和服务器,并指出失败的那一层。
kilobat why example.com要使用某个正在运行的进程的代理变量,请添加
--app并带上进程名称。kilobat why https://example.com --app process:curlKilobat 的这些检查都是免费的。AI 智能体可以通过 MCP 用
diagnose_connection和diagnose_network运行它们。请参阅找出某个网站或 API 连不上的原因。
常见问题
为什么浏览器正常,curl 却不行?
浏览器可以使用系统代理或自己的 DNS,而 curl 读取的是 https_proxy 等代理变量。请参阅Mac 上代理设置导致 App 无法连接。
参考资料
- curl:libcurl error codes
- curl(1),EXIT CODES,macOS 27.2 自带的 man 手册页
- dscacheutil(1) 和 dig(1),macOS 27.2 自带的 man 手册页
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。