質問: sudoでwgetを実行するとエラーが発生するのに、それがなくても正常に機能するのはなぜですか? 私は次のコマンドを試しました:$ wget -q --tries=10 --timeout=20 --spider http://google.com (- this so post から。bashでインターネット接続を確認したい。)次の出力が表示されます。spider mode enabled. check if remote file exists. --2015-09-28 09:55:50-- http://google.com/ connecting to 127.0.0.1:3128... connected. proxy request sent, awaiting response... 302 found location: http://www.google.de/?gfe_rd=cr&ei=k_iivrean-yh8qfe1yu4ca [following] spider mode enabled. check if remote file exists. --2015-09-28 09:55:50-- http://www.google.de/?gfe_rd=cr&ei=k_iivrean-yh8qfe1yu4ca connecting to 127.0.0.1:3128... connected. proxy request sent, awaiting response... 200 ok length: unspecified [text/html] remote file exists and could contain further links, but recursion is disabled -- not retrieving. okのようですが、sudoでcmdを実行すると、これを受け取ります:spider mode enabled. check if remote file exists. --2015-09-28 09:55:27-- http://google.com/ resolving google.com (google.com)... failed: name or service not known. wget: unable to resolve host address ‘google.com’ sudoで呼び出すスクリプトにこの行が必要なので、常に失敗します。この理由を誰かに教えてもらえますか?どうすれば回避できますか?
回答: 環境にプロキシが定義されています。あなたのものは127.0.0.1:3128のようです。sudoを実行すると、プロキシ環境変数が渡されないため、google.comを直接解決できません。次のコマンドを使用して、環境変数で定義したプロキシを確認できます。env | grep proxy ask ubuntuに関する追加情報 注:sudoにhttpプロキシ環境変数を渡したい場合は、次を試してください:sudo http_proxy="$http_proxy" wget -q --tries=10 --timeout=20 --spider http://google.com sudo -eを使用してすべての環境変数を渡すこともできます。sudo -e wget -q --tries=10 --timeout=20 --spider http://google.com stack overflowには、sudoing時に環境変数を維持するためのその他のオプションがあります。