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ą?


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)


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"

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).


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


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

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


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



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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.