私は 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 が含まれているかどうかを確認します。また、curl は |head をホスト名の一部と見なすため、パイプ文字が bash によって認識されなかったようです。これは再現可能ですか? パイプの周囲にスペースがあっても発生しますか (いいえ、スペースは不要ですが、エラーが変わる場合は、それが原因かもしれません)。元のコマンドは何かからコピーされたため、パイプは実際には他の非 ASCII 文字である可能性がありますか?