彼らがなぜこの変更を行ったのか、私にはわかりませんが、それはしばらく私を夢中にさせます。
なぜホストで機能するのかはわかりませんが、ping ではありませんが、これら2つのユーティリティの性質に関係していると思います。Pingは、エコーが返されるはずのパケットをワイヤ上にドロップするための単純な(非常に便利ですが)診断ユーティリティです。ホスト名検索機能は、ジョブの副作用であり、システムの再帰リゾルバーに渡されます(リンクされたライブラリやそのようなものを確認しても確認していません)。ホストの主な仕事はDNS名前解決を行うことであるため、独自の再帰リゾルバを実装します。
Appleの再帰リゾルバはmDNSResponderです。何らかの理由で、LionのmDNSResponderのバージョンは、(少なくとも)Snow Leopardと同じように動作するために「-AlwaysAppendSearchDomains」コマンドラインオプションを必要とします。
これを簡単に修正する方法を次に示します。
sudo sed -i .orig '/ProgramArguments/,/<\/array>/ {
s/\(<string>-launchd<\/string>\)/\1\
<string>-AlwaysAppendSearchDomains<\/string>/
}' /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
(上記の最後から2番目の行の先頭に2つのタブ文字があるはずですが、この小さなエディターでタブを挿入する方法がわからなかったため、16個のスペースを追加しました。どちらかが動作するはずですが、タブ元のファイルの間隔をより良く合わせます。)
これにより、「-AlwaysAppendSearchDomains」引数がmDNSResponder起動plistファイルに追加されます(およびバックアップコピーが保存されます)が、これはlaunchdによって制御されるため、mDNSResponderを再起動するようシステムに指示する必要があります。
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
実行中のmDNSResponderプロセスを確認すると、新しい引数で実行されていることがわかります。
ps auxww | grep mDNSResponder
(http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.htmlおよびhttp://kavassalis.com/2011/07/wtf-bugの小道具-in-os-x-10-7 /、この問題に対する私の答えを見つけました。)