OS Xコンピューター名が端末に表示されるものと一致しない


119

[システム環境設定]> [共有]のコンピューター名は「archos」に設定されていますが、端末では「iphone」と表示されています。iPhoneの開発を行うためにXcodeを読み込んだ後、これを開始しました。

Last login: Mon Nov  7 14:46:55 on ttys001
iphone:~ travis$ 

これを引き起こしている可能性のあるアイデアはありますか?


echo $ HOSTNAMEと入力すると何が得られますか
ダニエル

1
これは変です... echo $ HOSTNAMEの 'archos.local'を取得しています。私はオフィスにいたときに最初の記事を書きましたが、ホームネットワークでは正常に戻りました。これは職場のネットワークと関係があるのだろうか?
トラビスネルソン

回答:


94

これが発生するのは完全に正常です。リモートでターミナルにログインすると、bashは逆DNSルックアップを行います。接続しているネットワークでホスト名が指定されておらず、DHCPサーバーから応答がない場合、またはリモートDNSサーバーに対する逆引きが解決に失敗した場合にのみ同じになります。

ターミナルで次のコマンドを使用すると、デフォルト設定を簡単に上書きできます。

# sudo scutil --set HostName archos

以下を使用して確認できます。

# nslookup nn.nn.nn.nn
( or )
# host nn.nn.nn.nn

(nnはMacのIPアドレスを示します)


6
@Gio /Library/Preferences/SystemConfiguration/preferences.plistからSystemの下のHostNameキーを削除します。この回答をご覧ください。
-Lri

2
@Gio:@Lauriの投稿には優れた背景情報がありますが、ショートカットが必要な場合は、削除して実行しsudo scutil --set HostName ''ます。
mklement0

3
設定HostNameは別の値を作成するため、お勧めできません。この値は、後でを介してホスト名を変更しようとしても保持されますSystem Preferences > Sharing。対照的に、設定LocalHostNameは同じ値を更新し、通常はシェルによっても取得されますhostnameComputerName値は並行して更新される必要があります)。またはHostName、ここで有利な方法で設定が異なる動作をしますか?
mklement0

1
ホスト名をテストする別のものはhostname -f
ericn

2
私は2台のマシンでこの困難を抱えており、以下のJ.Hooverによる回答と、上記のmklement0によるコメントで提案されたアイデアは機能しませんでした。つまり、どちらもLocalHostNameとComputerNameを変更するだけですが、これらを変更しても、システム環境設定で指定されたコンピューター名を反映するためにターミナルが変更されることはありません。私の場合、この理由は、両方のマシンがTime Machineのバックアップであり、後で名前を変更したにもかかわらず、古いイメージからローカルに保存された資格情報を保持したためだと思います。HostNameだけが私のために働いた。参考までに。
oemb1905

45

scutilコマンドを使用して、他のいくつかを変更することもできます。

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"

2
[システム環境設定]-> [共有]で名前を変更し、を使用scutilしてset HostName、両方ともComputerNameLocalHostNameすでに(Mavericksで)私の新しい名前に設定されています。ただし、これらの他の設定が存在することを知ってうれしいです。
ジムスチュワート

@JimStewart:確かに、それは決して設定しないほうが良い理由です。HostNameそうすることで、後でSystem Preferencesでホスト名を変更しようとしても、その値が持続するからです。逆に、LocalHostName シェルとによってピックアップされるhostnameため、HostName必要ありません。
mklement0

私の場合、間違ったLocalHostName値がありました。sudo scutil --set LocalHostName ''削除されたLocalHostNameを実行すると、プロンプトでComputerNameが使用され、正しい値が設定されます。
マーク

14

シェル(のための2つの潜在的な理由がある$HOSTNAME変数、'\h'$PS1)とhostnameに示したものと異なるホスト名を報告するためのユーティリティはSystem Preferences > Sharing

  • sudo scutil --set HostName newNameホスト名を永続的に変更するために使用されました-残念ながら、この値は舞台裏でシステム環境設定によって設定された値とは無関係ですLocalHostName- この方法を提案していman hostnameても、その理由で使用しないでください。それを削除するために実行sudo scutil --set HostName ''、その時点LocalHostNameで再び報告する必要があります; 背景については、@ Lauri Rantaによるこの投稿を参照してください。

  • [ 更新:OSX 10.10の時点では、以下は当てはまりません ] /etc/hostsマシンのIPアドレスと一致するエントリがファイルにある場合、そのエントリの名前が報告されます。

上記のどちらにも当てはまらない場合にのみ、シェルはhostnameシステム環境設定で設定された値を反映します。


シェルからホスト名変更する場合は、次の両方を実行します。

  • sudo scutil --set LocalHostName <newName>
  • sudo scutil --set ComputerName <newFriendlyName>

where <newFriendlyName>は、友好的なバージョン(スペース、句読点)<newName>(英数字とダッシュのみ)です。


残念ながら、ちょうどそれらの2を設定すると、私の場合には十分ではしていないようでした:gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack

@rogerdpack:sudo scutil --set HostName ''最初に実行し(ケースが重要)、エントリがないことを確認しました/etc/hostsか?scutil --get HostName報告する必要がありHostname: not setます。
mklement0 14

ええscutil --get HostName HostName: not setの/ etc / hostsは...良性と思われる
rogerdpack

1
@rogerdpack:馬鹿げた質問:あなたのPS1変数はたまたまハードコードされたホスト名を持っているのではなく\h、そうですか?余談になります/etc/hostsが、OSX 10.10からは相談されなくなりました(回答を更新しました)。
mklement0 14

2
綺麗な。ホスト名を削除すると(提案したように空の文字列に設定することで:)、sudo scutil --set HostName '' OS Xはコンピューター名をそのIPアドレスにマップできるようになります(たとえば、これが機能するようになりましたping <computername>)。
ブレントファウスト


5

ジェフリー・フーバーのヒントが正解だったことに同意します。DNSキャッシュをフラッシュし、Macを再起動することも良いステップです。これは、ジェフフーバーの返信の変形です。

sudo -i
Password:

for n in HostName ComputerName LocalHostName; do
    scutil --set $n new_hostname
done

exit

1
あなたが欠けている-:それは--set動作する必要があります。また、ジェフの答えでコメントしたように、を設定しない方がおそらく良いでしょうHostName
mklement0

4

[システム環境設定]-> [共有]-> [コンピューター名]->任意の設定

そして、コンピューターを再起動します。コンソールコマンドは必要ありませんでした。OS X 10.10.2に対応


10.14.6で、[共有]-> [コンピューター名]がhostname「MacBook-Pro」を返すように設定されていました。私もそれを変更し、まだ問題があった。この問題は今まで見たことがありません。scutilコマンドは私のために働きました。GUIインターフェースを介してどこで、どのようにそれを行うと思いますか。
pedz



2

シェル自体(zsh私の場合)だけが正しいコンピューター名を表示できないという問題がありました。シェルを再起動するだけで解決しました:

exec /bin/zsh

2

前の回答に加えて、ルーターで静的アドレスを使用できることを忘れないでください。ネットワークカードの静的IPとMAC​​アドレスを入力してから、名前を設定する必要があります。ホスト名は、指定された名前に自動的に更新されます。それでおしまい。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.