我有一台运行 Mavericks 的新 OSX 机器,在访问 rubygems.org 时遇到了一个有趣的情况。
作为普通用户:
$ curl http://rubygems.org|head
curl: (7) Failed connect to rubygems.org|head:8080; Connection refused
但是使用 sudo:
$ sudo curl http://rubygems.org |head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9181 0 9181 0 0 6847 0 --:--:-- 0:00:01 --:--:-- 6851
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="google-site-verification" content="AuesbWQ9MCDMmC1lbDlw25RJzyqWOcDYpuaCjgPxEZY" />
<link rel="apple-touch-icon" href="/touch-icon-iphone.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/touch-icon-ipad.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/touch-icon-iphone4.png" />
<link rel="fluid-icon" href="/fluid-icon.png"/>
<link rel="search" type="application/opensearchdescription+xml" title="RubyGems.org" href="/opensearch.xml">
我以前从未见过这种情况——为什么它会以用户身份转到 8080?我该如何修复这个问题?
答案1
也许在用户的环境中配置了代理服务器?我首先运行“set|grep 8080”来查看是否有任何变量包含 8080。此外,bash 似乎无法识别管道字符,因为 curl 似乎将 |head 视为主机名的一部分。这种情况可以重复吗?即使管道周围有空格,这种情况是否也会发生(不,这应该不是必要的,但如果它改变了错误,可能会有所启发)。原始命令是否是从某个东西复制而来,以至于管道实际上可能是其他非 ASCII 字符?