Nazwa komputera z systemem OS X jest niezgodna z nazwą wyświetlaną na terminalu

119

Nazwa mojego komputera w Preferencjach systemowych> udostępnianie jest ustawiona na „archos”, ale na terminalu jest wyświetlana jako „iphone”. Właśnie zaczęło to robić po załadowaniu Xcode do programowania iPhone'a.

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

Wszelkie pomysły, co może być tego przyczyną?

Travis Nelson
źródło
co otrzymujesz po wpisaniu echa $ HOSTNAME
Daniel
1
to dziwne ... Dostaję 'archos.local' za echo $ HOSTNAME. Zrobiłem wstępny zapis, kiedy byłem w biurze, ale w mojej sieci domowej wszystko wróciło do normy. Zastanawiam się, czy to ma coś wspólnego z moją siecią pracy?
Travis Nelson

Odpowiedzi:

94

Jest to całkowicie normalne, że tak się dzieje; po zdalnym zalogowaniu się terminal bash wykonuje odwrotne wyszukiwanie DNS. Będzie tak samo, jeśli nazwa hosta nie zostanie podana w sieci, z której się łączysz, i nie będzie odpowiedzi od serwera DHCP lub wyszukiwanie wsteczne w stosunku do zdalnego serwera DNS nie powiedzie się.

Możesz łatwo ominąć ustawienie domyślne, używając tego polecenia w terminalu:

# sudo scutil --set HostName archos

Możesz to sprawdzić za pomocą:

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

(gdzie nn oznacza adres IP komputera Mac)

l'L'l
źródło
6
@Gio Usuń klucz HostName w Systemie z /Library/Preferences/SystemConfiguration/preferences.plist. Zobacz tę odpowiedź .
Lri
2
@Gio: @ Wpis Lauriego ma doskonałe informacje w tle, ale jeśli chcesz skrót: usunąć, uruchom sudo scutil --set HostName ''.
mklement0
3
Ustawienie HostNamenie jest wskazane, ponieważ tworzy osobną wartość, która następnie się utrzymuje, nawet gdy później spróbujesz zmienić nazwę hosta za pomocą System Preferences > Sharing. Natomiast ustawienie LocalHostNameaktualizuje tę samą wartość i zwykle jest również pobierane przez powłokę i hostname( ComputerNamewartość powinna być aktualizowana w tandemie). A może ustawienie HostNamezachowuje się inaczej w korzystny sposób?
mklement0
1
innym sprawdzającym nazwę hosta jesthostname -f
ericn
2
Miałem tę trudność na 2 maszynach, a pomysły zaproponowane w odpowiedzi poniżej J.Hoover oraz w komentarzu mklement0 powyżej nie zadziałały. Mianowicie, oboje radzicie, aby zmienić tylko LocalHostName i ComputerName, jednak zmiana tych nigdy nie zmieniła terminala, aby odzwierciedlał nazwę komputera określoną w Preferencjach systemowych. Uważam, że powodem tego jest, w moim przypadku, to, że obie maszyny były kopiami zapasowymi Time Machine i zachowały lokalnie przechowywane poświadczenia ze starego obrazu pomimo mojej późniejszej zmiany. Tylko HostName działało dla mnie. FYI do innych.
oemb1905
45

Możesz także zmienić niektóre inne rzeczy za pomocą polecenia scutil:

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
Jeffrey J. Hoover
źródło
2
Zmieniając nazwę w Ustawienia systemowe> Udostępnianie, a następnie za pomocą scutilustawić HostNamezarówno ComputerNamei LocalHostNamezostały już ustawione na nową nazwę dla mnie (w Mavericks). Miło wiedzieć, że te inne ustawienia istnieją.
Jim Stewart,
@JimStewart: Rzeczywiście, dlatego lepiej NIGDY nie ustawiać HostName, ponieważ spowoduje to utrzymanie tej wartości, nawet gdy później spróbujesz zmienić nazwę hosta za pomocą Preferencji systemowych . I odwrotnie, LocalHostName jest on odbierany przez powłokę i hostnamedlatego HostNamenigdy nie jest potrzebny.
mklement0
W moim przypadku miałem niepoprawną wartość LocalHostName. Uruchamianie sudo scutil --set LocalHostName ''usuniętego LocalHostName, a teraz mój monit używa ComputerName, która ma poprawną wartość.
zaznacz
14

Istnieją dwa potencjalne powody, dla których powłoka ( $HOSTNAMEzmienna, '\h'in $PS1) i hostnamenarzędzie zgłaszają nazwę hosta, która różni się od podanej w System Preferences > Sharing:

  • sudo scutil --set HostName newNamebył używany do ciągłej zmiany nazwy hosta - niestety ta wartość jest niezależna od LocalHostNamewartości ustawionej w Preferencjach systemowych za kulisami - nawet jeśli man hostnamesugeruje tę metodę, NIE UŻYWAJ Z tego powodu; uruchom, sudo scutil --set HostName ''aby go usunąć , w którym momencie LocalHostNamenależy ponownie zgłosić; w tle, zobacz ten post przez @Lauri Ranta.

  • [ Aktualizacja: Poniższe informacje nie są już zgodne z OSX 10.10 ] Jeśli /etc/hostsplik zawiera wpis pasujący do adresu IP urządzenia, zostanie podana nazwa tego wpisu.

Tylko jeśli żadna z powyższych odpowiedzi nie jest prawdziwa, powłoka i hostnameodzwierciedla wartość ustawioną w Preferencjach systemowych.


Jeśli chcesz zmienić nazwę hosta z powłoki , uruchom obie następujące opcje:

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

gdzie <newFriendlyName>może być bardziej przyjazna wersja (spacje, interpunkcja) <newName>(tylko alfanumeryczne i myślniki).

mklement0
źródło
niestety, samo ustawienie tych dwóch nie wydaje się wystarczające w moim przypadku: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack
@rogerdpack: Uruchomiłeś sudo scutil --set HostName ''pierwszy (sprawa ma znaczenie) i upewniłeś się, że nie ma wpisu /etc/hosts? scutil --get HostNamepowinien zgłosić Hostname: not set.
mklement0
tak scutil --get HostName HostName: not set/ etc / hosts wydaje się łagodny ...
rogerdpack
1
@rogerdpack: Głupie pytanie: twoja PS1zmienna nie ma sztywno zakodowanej nazwy hosta, a nie używa \h, prawda? Na marginesie: /etc/hostsnie jest już konsultowany od OSX 10.10 (zaktualizowałem swoją odpowiedź).
mklement0
2
Piękny. Usunięcie nazwy hosta (poprzez ustawienie pustego ciągu, tak jak sugerowałeś:) sudo scutil --set HostName '' ponownie pozwala OS X na mapowanie nazwy komputera na jego adres IP (np. Teraz to działa ping <computername>).
Brent Faust
7

Oprócz wskazówki Jeffrey J. Hoovera (powyżej) ,

Dodałbym te dwa ostatnie kroki:

  • Opróżnij pamięć podręczną DNS, wpisując: dscacheutil -flushcache
  • Uruchom ponownie komputer Mac.
Niebezpieczeństwo 14
źródło
5

Zgadzam się, że wskazówka Jeffreya Hoovera była prawidłową odpowiedzią. Opróżnianie pamięci podręcznej DNS i ponowne uruchamianie komputera Mac jest również dobrym krokiem. Oto wariant odpowiedzi Jeffa Hoovera:

sudo -i
Password:

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

exit
użytkownik67806
źródło
1
Tęsknisz za -: musi być --setdo pracy. Ponadto, jak skomentowałem odpowiedź Jeffa: prawdopodobnie lepiej nie ustawiać HostName.
mklement0
4

Preferencje systemowe -> Udostępnianie -> Nazwa komputera -> ustaw na cokolwiek

Następnie uruchom ponownie komputer. Nie były potrzebne żadne polecenia konsoli. Działa dla OS X 10.10.2

Terry Bu
źródło
W dniu 10.14.6 miałem sytuację, w której Udostępnianie -> Nazwa komputera zostało ustawione tak, jak chciałem, ale hostnamezwróciło „MacBook-Pro”. Nawet to zmieniłem i nadal miałem problem. Nigdy wcześniej nie widziałem tego problemu. Te scutilkomendy pracowali dla mnie. Zastanawiam się, gdzie / jak masz to zrobić za pomocą interfejsu GUI.
pedz
3

Użyj tego

sudo systemsetup -setcomputername $name
Quanlong
źródło
2

Miałem problem polegający na tym, że tylko sama powłoka ( zshw moim przypadku) nie wyświetlała prawidłowej nazwy komputera. Ponowne uruchomienie powłoki rozwiązało to:

exec /bin/zsh
Magnus Gustavsson
źródło
2

Oprócz poprzedniej odpowiedzi pamiętaj, że możesz użyć adresu statycznego w routerze. Musisz wprowadzić statyczny adres IP i adres MAC karty sieciowej, a następnie ustawić dla niej nazwę. Nazwa hosta zostanie automatycznie zaktualizowana do podanej nazwy. Otóż ​​to.

rzeczownik
źródło