Der Name des OS X-Computers stimmt nicht mit dem auf dem Terminal angezeigten überein

119

Mein Computername in den Systemeinstellungen> Freigabe ist auf "archos" eingestellt, wird jedoch auf dem Terminal als "iphone" angezeigt. Nachdem ich Xcode für die iPhone-Entwicklung geladen hatte, begann ich gerade damit.

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

Irgendwelche Ideen, was das verursachen könnte?

Travis Nelson
quelle
Was bekommst du, wenn du echo $ HOSTNAME
Daniel
1
Das ist komisch ... Ich bekomme 'archos.local' für echo $ HOSTNAME. Ich habe die erste Aufzeichnung im Büro durchgeführt, aber in meinem Heimnetzwerk ist sie wieder normal. Ich frage mich, ob dies etwas mit meinem Arbeitsnetzwerk zu tun hat.
Travis Nelson

Antworten:

94

Es ist völlig normal, dass dies auftritt. Wenn Sie sich remote anmelden, führt Terminal Bash eine umgekehrte DNS-Suche durch. Dies ist nur dann der Fall, wenn der Hostname in dem Netzwerk, über das Sie eine Verbindung herstellen, nicht angegeben ist und keine Antwort vom DHCP-Server eingeht oder die umgekehrte Suche nach dem Remote-DNS-Server nicht aufgelöst werden kann.

Sie können die Standardeinstellung leicht überschreiben, indem Sie diesen Befehl in Terminal verwenden:

# sudo scutil --set HostName archos

Sie können dies überprüfen, indem Sie Folgendes verwenden:

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

(wobei nn die IP-Adresse Ihres Mac angibt)

l'l'l
quelle
6
@Gio Löschen Sie den HostName-Schlüssel unter System unter /Library/Preferences/SystemConfiguration/preferences.plist. Siehe diese Antwort .
Lri
2
@Gio: @ Lauris Beitrag hat ausgezeichnete Hintergrundinformationen, aber wenn Sie eine Verknüpfung möchten: Löschen, ausführen sudo scutil --set HostName ''.
mklement0
3
Die Einstellung HostNameist nicht ratsam, da dadurch ein separater Wert erstellt wird, der auch dann erhalten bleibt, wenn Sie später versuchen, den Hostnamen über zu ändern System Preferences > Sharing. Im Gegensatz dazu LocalHostNameaktualisiert die Einstellung denselben Wert und wird normalerweise auch von der Shell und übernommen hostname(der ComputerNameWert sollte gleichzeitig aktualisiert werden). Oder verhält sich das Setzen HostNameanders, als es hier vorteilhaft ist?
mklement0
1
ein anderer, um den Hostnamen zu testen, isthostname -f
Ericn
2
Ich hatte diese Schwierigkeit auf 2 Maschinen und die Ideen, die in der Antwort von J.Hoover unten und im Kommentar von mklement0 oben vorgeschlagen wurden, funktionierten nicht. Sie raten nämlich beide, nur den LocalHostName und den ComputerName zu ändern. Wenn Sie jedoch diesen Namen ändern, wird das Terminal nie so geändert, dass der in den Systemeinstellungen angegebene Computername angezeigt wird. Ich glaube, der Grund dafür ist in meinem Fall, dass beide Computer Time Machine-Backups waren und die lokal gespeicherten Anmeldeinformationen aus dem alten Image beibehalten haben, obwohl ich sie zu einem späteren Zeitpunkt umbenannt habe. Nur Hostname hat für mich funktioniert. FYI zu anderen.
oemb1905
45

Möglicherweise möchten Sie auch einige andere Dinge mit dem Befehl scutil ändern:

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
Jeffrey J. Hoover
quelle
2
Indem Sie den Namen in den Systemeinstellungen-> Freigabe ändern und dann scutilzum Festlegen verwenden HostName, wurden beide ComputerNameund LocalHostNamefür mich bereits auf den neuen Namen festgelegt (in Mavericks). Schön zu wissen, dass es diese anderen Einstellungen gibt.
Jim Stewart
@JimStewart: In der Tat ist es aus diesem Grund besser, NIEMALS festzulegen HostName, da dieser Wert auch dann bestehen bleibt, wenn Sie später versuchen, Ihren Hostnamen über die Systemeinstellungen zu ändern . Umgekehrt sind die LocalHostName heißt gepflückt durch die Schale und hostname, so HostNamewird nie gebraucht.
mklement0
In meinem Fall hatte ich einen falschen LocalHostName-Wert. Lauf sudo scutil --set LocalHostName ''gelöscht Local und jetzt meine Aufforderung wird mit Computer, die den richtigen Wert hat.
Markieren Sie den
14

Es gibt zwei mögliche Gründe, warum die Shell ( $HOSTNAMEVariable, '\h'in $PS1) und das hostnameDienstprogramm einen Hostnamen melden, der sich von dem in gezeigten unterscheidet System Preferences > Sharing:

  • sudo scutil --set HostName newNamewurde verwendet, um den Hostnamen dauerhaft zu ändern - dieser Wert ist leider unabhängig von dem LocalHostNameWert, der in den Systemeinstellungen hinter den Kulissen festgelegt wurde - auch wenn man hostnamediese Methode empfohlen wird, verwenden Sie sie aus diesem Grund NICHT . Führen Sie sudo scutil --set HostName ''den Befehl aus , um es zu entfernen . An diesem Punkt LocalHostNamesollte erneut gemeldet werden. Hintergrundinformationen finden Sie in diesem Beitrag von @Lauri Ranta.

  • [ Update: Ab OSX 10.10 gilt Folgendes nicht mehr ] Wenn Ihre /etc/hostsDatei einen Eintrag enthält, der mit der IP-Adresse Ihres Computers übereinstimmt , wird der Name dieses Eintrags gemeldet.

Nur wenn keine der oben genannten Bedingungen zutrifft, wird die Shell hostnameden in den Systemeinstellungen festgelegten Wert wiedergeben.


Wenn Sie Ihren Hostnamen in der Shell ändern möchten , führen Sie beide der folgenden Aktionen aus :

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

wo <newFriendlyName>kann eine freundlichere Version sein (Leerzeichen, Interpunktion) von <newName>(nur alphanumerische Zeichen und Bindestriche).

mklement0
quelle
Leider schien es in meinem Fall nicht ausreichend zu sein, nur diese beiden zu setzen: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack
@rogerdpack: Und du bist sudo scutil --set HostName ''zuerst gelaufen (case matters) und hast sichergestellt, dass kein Eintrag in ist /etc/hosts? scutil --get HostNamesollte berichten Hostname: not set.
mklement0
Ja scutil --get HostName HostName: not set/ etc / hosts scheint gütig ...
Rogerdpack
1
@rogerdpack: Dumme Frage: Ihre PS1Variable hat nicht zufällig einen fest codierten Hostnamen, anstatt ihn zu verwenden \h, oder? Übrigens: /etc/hostswird ab OSX 10.10 nicht mehr konsultiert (ich habe meine Antwort aktualisiert).
mklement0
2
Schön. Wenn Sie den Hostnamen entfernen (indem Sie ihn auf die von Ihnen vorgeschlagene leere Zeichenfolge setzen:), sudo scutil --set HostName '' kann OS X den Computernamen wieder seiner IP-Adresse zuordnen (z. B. funktioniert dies jetzt ping <computername>).
Brent Faust
7

Zusätzlich zu Jeffrey J. Hoovers Tipp (oben) ,

Ich würde diese letzten beiden Schritte hinzufügen:

  • Leeren Sie den DNS-Cache, indem Sie Folgendes eingeben: dscacheutil -flushcache
  • Starten Sie Ihren Mac neu.
Gefahr14
quelle
5

Ich stimme zu, dass Jeffrey Hoovers Tipp die richtige Antwort war. Das Leeren des DNS-Cache und das Neustarten des Mac ist ebenfalls ein netter Schritt. Dies ist eine Variante von Jeff Hoovers Antwort:

sudo -i
Password:

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

exit
user67806
quelle
1
Ihnen fehlt ein -: Es muss --setfunktionieren. Wie ich auch bei Jeffs Antwort bemerkte: Es ist wahrscheinlich besser, nicht zu setzen HostName.
mklement0
4

Systemeinstellungen -> Freigabe -> Computername -> Beliebig einstellen

Starten Sie anschließend Ihren Computer neu. Es waren keine Konsolenbefehle erforderlich. Kompatibel mit OS X 10.10.2

Terry Bu
quelle
Am 10.14.6 hatte ich eine Situation, in der der Freigabe-> Computername so eingestellt war, wie ich es wollte, und dennoch hostname"MacBook-Pro" zurückgab. Ich habe es sogar geändert und hatte immer noch das Problem. Ich habe dieses Problem noch nie gesehen. Die scutilBefehle funktionierten für mich. Ich frage mich, wo / wie Sie das über die GUI-Schnittstelle tun sollen.
Pedz
3

Benutze das

sudo systemsetup -setcomputername $name
Quanlong
quelle
2

Ich hatte das Problem, dass nur die Shell selbst ( zshin meinem Fall) nicht den richtigen Computernamen zeigte. Ein einfacher Neustart der Shell löste das Problem:

exec /bin/zsh
Magnus Gustavsson
quelle
2

Denken Sie zusätzlich zur vorherigen Antwort daran, dass Sie in Ihrem Router eine statische Adresse verwenden können. Sie müssen die statische IP-Adresse und die MAC-Adresse Ihrer Netzwerkkarte eingeben und dann einen Namen dafür festlegen. Der Hostname wird automatisch auf den angegebenen Namen aktualisiert. Das ist es.

Substantiv
quelle