Терминал OSX показывает неправильное имя хоста

30

Когда я открываю терминал, я ожидаю, что он покажет, на что настроен мой PS1 \h:\W \u\$.

Однако это не отображает мое имя хоста Eriks-MacBook, как показано в Системных настройках.

Вместо этого он показывает случайную строку unknownb88d120cd4b2.

Как это можно исправить или сбросить?

Эта машина совершенно новая, и настройки / настройки не изменились.

Эрик В
источник
Введите в hostnameприглашение и нажмите клавишу ввода. Что вы получаете?
Блендер
unknownb88d120cd4b2: ~ erik $ имя хоста unknownb88d120cd4b2 unknownb88d120cd4b2: ~ erik $
Но это не то, что имя моего компьютера в System Prefs - Sharing. Я изменил его со значения по умолчанию на «erik-mba», надеясь, что это поможет, но без кубиков.
Смотрите также apple.stackexchange.com/questions/30552/...
rogerdpack

Ответы:

25

Гордон дает хороший ответ на происхождение вашего имени хоста.

Если вы хотите, чтобы имя, которое вы установили в Системных настройках -> Общий доступ -> Имя компьютера, отображалось в вашем приглашении, замените его \hна $(scutil --get ComputerName). Например, моя подсказка установлена ​​с

PS1="[\u@:$(scutil --get ComputerName) \W]\\$ "
AJS
источник
19

Терминал показывает первую метку вашего имени хоста BSD (при условии, что ваша оболочка BASH). Если ваше имя хоста BSD, yourhostname.mynetwork.comто терминал будет отображать только yourhostname-

Так откуда берется имя хоста BSD? Это может прийти из нескольких мест:

• из файла: /etc/hostconfig

• остальное из файла: /Library/Preferences/SystemConfiguration/preferences.plist( Система ▸ Система ▸ Имя хоста )

• в противном случае результат обратного DNS-запроса вашего основного IP-адреса (поэтому вы можете заметить, что при посещении интернет-кафе вы видите совершенно другое имя хоста, чем при подключении дома)

• иначе ваше имя хоста "Bonjour" в Системных настройках> Общий доступ ( preferences.plistснова ... Система again Сеть ▸ HostNames ▸ LocalHostName )

• наконец, если ничего из вышеперечисленного не было установлено, имя хоста BSD будет просто localhost

Кстати, я недавно ответил на тот же вопрос здесь: Mac OS X Terminal - откуда берется имя приглашения

имя пользователя
источник
1
Возможно ли, что обратный поиск DNS имеет приоритет над всеми другими конфигурациями в моей системе?
Цезарсол
Я проверил на моей собственной системе: / etc / hostconfig не существует. Предпочтения.plist ▸ Система ▸ Система ▸ Имя хоста не определено (хотя Имя компьютера указано ). Обратный просмотр DNS возвращает тарабарщины, которые я вижу в окне моего терминала. Система ▸ Сеть ▸ HostNames ▸ Определено LocalHostName . Таким образом, если ваша система показывает то же, что и у меня, то обратный поиск DNS был первым совпадением и имеет приоритет над LocalHostName .
Эдвард Фальк
12

OS X пытается сделать несколько вещей, чтобы найти свое «имя хоста». К сожалению, я не знаю точного списка (и порядка), но я думаю, что здесь происходит то, что он обнаруживает DNS-имя, связанное с его IP-адресом, и использует его вместо имени Bonjour, которое он рекламирует для себя (тот, который определен в Совместное использование предпочтений).

Так почему он находит имя DNS? Я предполагаю, что ваш локальный маршрутизатор / DHCP-сервер / DNS-сервер динамически назначает его один, основываясь на его аппаратном IP-адресе (предположительно, b8: 8d: 12: 0c: d4: b2). Вы можете настроить параметры маршрутизатора, чтобы он не делал этого, или установить идентификатор клиента DHCP компьютера (в разделе «Сетевые настройки», «Дополнительные параметры»), чтобы указать, какое имя ему назначается.

Гордон Дэвиссон
источник
2
Это было очень полезно для меня. Моя машина показывала это поведение, ключевым моментом которого было то, что он, казалось, самопроизвольно менял имена, как я никогда раньше не видел другого. Так что я потратил 90 минут на проверку на вирусы, проблемы с диском и тому подобное. Рад, что я могу спокойно прекратить тратить время.
conspiritech
1

Не уверенный, если у вас все еще есть проблемы или нет, это, кажется, было исправлено когда-то между Йосемити и Сьеррой.

Для новых компьютеров я начинаю с «Системных настроек общего доступа», вводя [новое имя] в качестве желаемого имени компьютера. Я также ввожу [новое имя] во все поля активного идентификатора клиента DHCP для каждого сетевого интерфейса. После того, как я это сделал, я открываю Терминал, чтобы подтвердить, что он сообщает похожее имя, некоторые символы не допускаются, поэтому система при необходимости изменит имя. Вы можете изменить имя, используя шаги ниже, просто замените блок [новое имя] на желаемое имя компьютера.

  1. Открытый терминал
  2. В командной строке введите следующее: sudo scutil --set HostName [новое имя]
  3. Откройте новое окно терминала, чтобы подтвердить, что новое имя было принято.

Если имя мне не нравится, я перехожу к описанному выше, прежде чем связать его с Active Domain.

Уоллес Карракер
источник