Терминал OSX показывает неправильное имя хоста
Когда я открываю терминал, я ожидаю, что он покажет, на что настроен мой PS1 \h:\W \u\$
,
Однако это не отображает мое имя хоста Eriks-MacBook
, как показано в Системных настройках.
Вместо этого он показывает случайную строку unknownb88d120cd4b2
,
Как это можно исправить или сбросить?
Эта машина совершенно новая, и настройки / настройки не изменились.
7 ответов
Гордон дает хороший ответ на происхождение вашего имени хоста.
Если вы хотите, чтобы имя, которое вы установили в Системных настройках -> Общий доступ -> Имя компьютера, отображалось в вашем приглашении, замените \h
с $(scutil --get ComputerName)
, Например, моя подсказка установлена с
PS1="[\u@:$(scutil --get ComputerName) \W]\\$ "
Терминал показывает первую метку вашего имени хоста BSD (при условии, что ваша оболочка BASH). Если ваше имя хоста BSD yourhostname.mynetwork.com
тогда терминал будет отображать только yourhostname
-
Так откуда берется имя хоста BSD? Это может прибыть из нескольких мест:
• из файла: /etc/hostconfig
• остальное из файла: /Library/Preferences/SystemConfiguration/preferences.plist
(Система ▸ Система ▸ HostName)
• в противном случае результат обратного DNS-запроса вашего основного IP-адреса (поэтому вы можете заметить, что при посещении интернет-кафе вы видите совершенно другое имя хоста, чем при подключении дома)
• иначе ваше имя хоста "Bonjour" в Системных настройках> Общий доступ (preferences.plist
снова... Система ▸ Сеть ▸ HostNames ▸ LocalHostName)
• наконец, если ничего из вышеперечисленного не было установлено, имя хоста BSD будет просто localhost
Кстати, я недавно ответил на тот же вопрос здесь: Mac OS X Terminal - откуда берется имя приглашения
OS X пытается сделать несколько вещей, чтобы найти свое "имя хоста". К сожалению, я не знаю точного списка (и порядка), но я думаю, что здесь происходит то, что он обнаруживает DNS-имя, связанное с его IP-адресом, и использует его вместо имени Bonjour, он рекламирует себя (тот, который определен в Совместное использование предпочтений).
Так почему он находит имя DNS? Я предполагаю, что ваш локальный маршрутизатор /DHCP-сервер /DNS-сервер динамически назначает его на основе аппаратного адреса Ethernet (предположительно, b8:8d:12:0c:d4:b2). Возможно, вам удастся изменить настройки маршрутизатора, чтобы он не делал этого, или вы можете установить идентификатор клиента DHCP компьютера (в разделе "Сетевые настройки", "Дополнительные параметры"), чтобы указать, какое имя он вам назначает.
Для меня:
scutil --get HostName
был пуст,/etc/hosts
было хорошо,/etc/hostconfig
не существовало,- имя Bonjour было правильным,
- все файлы настроек были правильными, но
hostname
будет упорно использовать имя по умолчанию (iMac
в моем случае).
Оказывается, плохая репутация была связана с арендой DHCP на интерфейсе Ethernet (но не с интерфейсом WiFi). Чтобы убедить арендодателя DHCP использовать новое имя, мне пришлось:
- Перейдите в Системные настройки -> Сеть -> Ethernet и измените раскрывающееся меню "Настроить IPv4" на "Выкл.".
- Нажмите "Применить".
- Щелкните "Дополнительно", затем выберите вкладку WINS.
- Измените NetBIOS-имя (которое отображало старое имя) на новое.
- Нажмите "ОК", затем "Применить".
- Наконец, снова измените "Выкл" на "Использование DHCP".
Как только новая аренда была установлена, но маршрутизатор и локальная машина сообщили новое имя, и больше не было следов старого.
Плохая аренда DHCP была определенно виновата, но исправление имени NetBIOS до продления аренды могло быть решающим аргументом.
Не уверенный, если у вас все еще есть проблемы или нет, это, кажется, было исправлено когда-то между Йосемити и Сьеррой.
Для новых компьютеров я начинаю с "Системных настроек общего доступа", вводя [новое имя] в качестве желаемого имени компьютера. Я также ввожу [новое имя] во все поля активного идентификатора клиента DHCP для каждого сетевого интерфейса. После того, как я это сделал, я открываю Терминал, чтобы подтвердить, что он сообщает похожее имя, некоторые символы не допускаются, поэтому система изменит имя при необходимости. Вы можете изменить имя, используя шаги ниже, просто замените блок [новое имя] на желаемое имя компьютера.
- Открытый терминал
- В командной строке введите следующее: sudo scutil --set HostName [новое имя]
- Откройте новое окно терминала, чтобы подтвердить, что новое имя было принято.
Если имя мне не нравится, я перехожу к описанному выше, прежде чем связать его с Active Domain.
В моем случае я исправил это, выйдя из терминала и продлив аренду DHCP.
Меню Apple -> Системные настройки -> Сеть -> Wi-Fi (или Ethernet) -> Дополнительно -> вкладка TCP/IP -> Продлить аренду DHCP
Перезапустил терминал, и приглашение вернулось в нормальное состояние.
У меня была такая же проблема, и я просто использовал эту командуscutil --set HostName "name"