Ім'я комп'ютера OS X не відповідає тому, що відображається на терміналі


119

Ім'я мого комп’ютера в System Preferences> спільний доступ встановлено на "archos", але на терміналі відображається як "iphone". Це почало робити це після того, як я завантажив Xcode для розробки iPhone.

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

Будь-які ідеї, що це може спричинити?


що ви отримуєте, коли набираєте echo $ HOSTNAME
Daniel

1
це дивно ... я отримую "archos.local" за ехо $ HOSTNAME. Я робив початкову реєстрацію, коли був у офісі, але в домашній мережі він повернувся до норми. Цікаво, чи це пов’язане з моєю робочою мережею?
Тревіс Нельсон

Відповіді:


94

Це абсолютно нормально для цього; коли ви віддалено входите в термінал, bash робить зворотний пошук DNS. Це буде те саме, якщо ім'я хоста не вказано в мережі, з якою ви підключаєтесь, і відповідь DHCP-сервера не буде отримана, або зворотний пошук на віддаленому сервері DNS не вдасться вирішити.

Ви можете легко перевершити налаштування за замовчуванням, скориставшись цією командою в Терміналі:

# sudo scutil --set HostName archos

Ви можете перевірити це за допомогою:

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

(де nn означає ip-адресу вашого Mac)


6
@Gio Видаліть ключ HostName у розділі Система з /Library/Preferences/SystemConfiguration/preferences.plist. Дивіться цю відповідь .
Лрі

2
@Gio: @ Lauri має чудову довідкову інформацію, але якщо ви хочете ярлик: видалити, запустіть sudo scutil --set HostName ''.
mklement0

3
Налаштування HostNameнебажано, оскільки воно створює окреме значення, яке зберігається, навіть коли ви пізніше намагаєтесь змінити ім'я хоста через System Preferences > Sharing. Навпаки, налаштування LocalHostNameоновлює одне і те ж значення, і зазвичай воно також підбирається оболонкою і hostname( ComputerNameзначення повинно бути оновлено в тандемі). Або обстановка HostNameповодиться по-іншому так, як вигідно тут?
mklement0

1
Ще одна перевірка імені хостаhostname -f
ericn,

2
У мене виникли труднощі на двох машинах, і ідеї, запропоновані у відповіді Дж. Хувера нижче, і в коментарі від mklement0 вище, не працювали. А саме, ви обидва радите змінити лише LocalHostName і ComputerName, однак змінивши їх, ніколи не змінив термінал, щоб відображати ім'я комп'ютера, вказане в системних налаштуваннях. Я вважаю, що причина цього, в моєму випадку, полягає в тому, що обидві машини були резервними копіями Time Machine і зберігали локально збережені облікові дані зі старого зображення, незважаючи на те, що я перейменовувався на більш пізню дату. На мене працював тільки HostName. FYI іншим.
oemb1905

45

Ви також можете змінити деякі інші речі за допомогою команди scutil:

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

2
Змінивши ім'я в System Preferences-> Sharing та використовуючи scutilдля встановлення HostName, обидва ComputerNameі LocalHostNameвже були встановлені на нове для мене ім’я (у Mavericks). Приємно знати, що ці інші налаштування існують, хоча.
Джим Стюарт

@JimStewart: Дійсно, тому краще НІКОЛИ не встановлювати HostName, оскільки це зробить це значення збереженим, навіть коли ви пізніше спробуєте змінити ім'я хоста через Системні налаштування . З іншого боку , LocalHostName є підібрано оболонка і hostname, тому HostNameніколи не потрібно.
mklement0

У моєму випадку у мене було неправильне значення LocalHostName. Запуск sudo scutil --set LocalHostName ''видаленого LocalHostName, і тепер у моїй підказці використовується ComputerName, яке має правильне значення.
позначити

14

Існує дві можливі причини оболонки ( $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>

де <newFriendlyName>може бути дружніша версія (пробіли, пунктуація) <newName>(лише буквено-цифрові знаки та тире).


на жаль, просто встановити цих двох в моєму випадку не вистачило
rogerdpack

@rogerdpack: І ти запустив sudo scutil --set HostName ''першим (справи справи) і переконався, що немає входу /etc/hosts? scutil --get HostNameповинен звітувати Hostname: not set.
mklement0

так scutil --get HostName HostName: not set/ тощо / господарі здаються доброякісними ...
rogerdpack

1
@rogerdpack: Дурне питання: ваша PS1змінна не має жорсткого коду імені хоста, а не використання \h, чи не так? Як бік: /etc/hostsз OSX 10.10 більше не радиться (я оновив свою відповідь).
mklement0

2
Гарний. Видалення імені хоста (встановивши його в порожній рядок, як ви запропонували:) sudo scutil --set HostName '' знову дозволяє OS X зіставити ім'я комп'ютера на його IP-адресу (наприклад, це зараз працює ping <computername>).
Brent Faust


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

Налаштування системи -> Спільний доступ -> Ім'я комп'ютера -> встановіть його на що завгодно

А потім перезавантажте комп’ютер. Жодні команди консолі не потрібні. Працює для ОС X 10.10.2


10.14.6 у мене виникла ситуація, коли ім'я спільного доступу -> комп’ютер було встановлено так, як я хотів, щоб він ще hostnameповернув "MacBook-Pro". Я навіть змінив це і в мене ще залишилася проблема. Я ніколи раніше не бачив цього питання. Ці scutilкоманди працювали для мене. Мені цікаво, де / як ви вважаєте це робити через інтерфейс GUI.
pedz

3

Як згадується в окремій відповіді, інший варіант полягає в тому, щоб замінити стандартний запит PS1, як-от виконати наступний рядок (або додати його до файлу ~ / .bash_profile):

 $ PS1="$(scutil --get ComputerName):\W \u\\$ "

списки:

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/



2

У мене виникла проблема, що лише сама оболонка ( zshу моєму випадку) не змогла вказати правильне ім’я комп’ютера. Простий перезапуск оболонки вирішив її:

exec /bin/zsh

2

Окрім попередньої відповіді, пам’ятайте, що ви можете використовувати статичну адресу у своєму маршрутизаторі. Вам потрібно ввести статичний IP-адресу та MAC-адресу вашої мережевої картки, після чого встановити ім’я для неї. Ім'я хоста буде автоматично оновлено до вказаного імені. Це воно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.