[システム環境設定]> [共有]のコンピューター名は「archos」に設定されていますが、端末では「iphone」と表示されています。iPhoneの開発を行うためにXcodeを読み込んだ後、これを開始しました。
Last login: Mon Nov 7 14:46:55 on ttys001
iphone:~ travis$
これを引き起こしている可能性のあるアイデアはありますか?
[システム環境設定]> [共有]のコンピューター名は「archos」に設定されていますが、端末では「iphone」と表示されています。iPhoneの開発を行うためにXcodeを読み込んだ後、これを開始しました。
Last login: Mon Nov 7 14:46:55 on ttys001
iphone:~ travis$
これを引き起こしている可能性のあるアイデアはありますか?
回答:
これが発生するのは完全に正常です。リモートでターミナルにログインすると、bashは逆DNSルックアップを行います。接続しているネットワークでホスト名が指定されておらず、DHCPサーバーから応答がない場合、またはリモートDNSサーバーに対する逆引きが解決に失敗した場合にのみ同じになります。
ターミナルで次のコマンドを使用すると、デフォルト設定を簡単に上書きできます。
# sudo scutil --set HostName archos
以下を使用して確認できます。
# nslookup nn.nn.nn.nn
( or )
# host nn.nn.nn.nn
(nnはMacのIPアドレスを示します)
sudo scutil --set HostName ''ます。
HostNameは別の値を作成するため、お勧めできません。この値は、後でを介してホスト名を変更しようとしても保持されますSystem Preferences > Sharing。対照的に、設定LocalHostNameは同じ値を更新し、通常はシェルによっても取得されますhostname(ComputerName値は並行して更新される必要があります)。またはHostName、ここで有利な方法で設定が異なる動作をしますか?
hostname -f
scutilコマンドを使用して、他のいくつかを変更することもできます。
sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
scutilしてset HostName、両方ともComputerName、LocalHostNameすでに(Mavericksで)私の新しい名前に設定されています。ただし、これらの他の設定が存在することを知ってうれしいです。
HostNameそうすることで、後でSystem Preferencesでホスト名を変更しようとしても、その値が持続するからです。逆に、LocalHostName はシェルとによってピックアップされるhostnameため、HostName必要ありません。
sudo scutil --set LocalHostName ''削除されたLocalHostNameを実行すると、プロンプトでComputerNameが使用され、正しい値が設定されます。
シェル(のための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>(英数字とダッシュのみ)です。
sudo scutil --set HostName ''最初に実行し(ケースが重要)、エントリがないことを確認しました/etc/hostsか?scutil --get HostName報告する必要がありHostname: not setます。
scutil --get HostName HostName: not setの/ etc / hostsは...良性と思われる
PS1変数はたまたまハードコードされたホスト名を持っているのではなく\h、そうですか?余談になります/etc/hostsが、OSX 10.10からは相談されなくなりました(回答を更新しました)。
sudo scutil --set HostName '' OS Xはコンピューター名をそのIPアドレスにマップできるようになります(たとえば、これが機能するようになりましたping <computername>)。
最後の2つのステップを追加します。
dscacheutil -flushcacheジェフリー・フーバーのヒントが正解だったことに同意します。DNSキャッシュをフラッシュし、Macを再起動することも良いステップです。これは、ジェフフーバーの返信の変形です。
sudo -i
Password:
for n in HostName ComputerName LocalHostName; do
scutil --set $n new_hostname
done
exit
-:それは--set動作する必要があります。また、ジェフの答えでコメントしたように、を設定しない方がおそらく良いでしょうHostName。
別の回答で述べたように、別のオプションは、次の行を実行する(または〜/ .bash_profileファイルに追加する)など、デフォルトのPS1プロンプトをオーバーライドすることです。
$ PS1="$(scutil --get ComputerName):\W \u\\$ "
refs:
https://superuser.com/a/414903/39364
http://www.cnet.com/news/keep-your-command-prompt-host-name-static-in-os-x-and-other-unix-systems/
シェル自体(zsh私の場合)だけが正しいコンピューター名を表示できないという問題がありました。シェルを再起動するだけで解決しました:
exec /bin/zsh