29

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

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

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

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

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

4 ответа4

25

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

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

PS1="[\u@:$(scutil --get ComputerName) \W]\\$ "
19

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

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

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

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

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

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

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

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

11

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

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

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .