OSX 终端显示不正确的主机名

Eri*_*k W 34 terminal hostname macos

当我打开终端时,我希望它显示我的 PS1 设置为\h:\W \u\$.

但是它没有显示我的主机名Eriks-MacBook,如系统偏好设置中所示。

相反,它显示了一个随机字符串unknownb88d120cd4b2

如何修复或重置?

这台机器是全新的,偏好/设置没有改变。

小智 27

Gordon 很好地回答了主机名的来源。

如果您希望在系统偏好设置 -> 共享 -> 计算机名称中设置的名称显示在提示中,请替换\h$(scutil --get ComputerName). 例如我的提示设置为

PS1="[\u@:$(scutil --get ComputerName) \W]\\$ "
Run Code Online (Sandbox Code Playgroud)


use*_*ame 23

终端显示您的 BSD 主机名的第一个标签(假设您的 shell 是 BASH)。如果您的 BSD 主机名是yourhostname.mynetwork.com那么终端将只显示yourhostname-

那么 BSD 主机名从何而来?它可以来自几个地方:

• 从文件: /etc/hostconfig

•从其他文件:/Library/Preferences/SystemConfiguration/preferences.plist?系统系统主机名

• else 对您的主要 IP 地址进行反向 DNS 查询的结果(因此您可能会注意到访问网吧时显示的主机名与在家中连接时显示的主机名完全不同)

• 否则您在“系统偏好设置”>“共享”中的“Bonjour”主机名(preferences.plist再次...系统?网络?主机名?LocalHostName

• 最后,如果以上都没有设置,BSD 主机名将是简单的 localhost

顺便说一句,我刚才在这里回答了同样的问题:Mac OS X 终端 - 提示名称来自哪里

  • **反向 DNS 查找** 是否可能优先于我系统上的所有其他配置? (2认同)

Gor*_*son 12

OS X 尝试了很多方法来找到它的“主机名”。不幸的是,我不知道确切的列表(和顺序),但我认为这里发生的事情是它正在发现与其 IP 地址相关联的 DNS 名称,并使用它而不是它为自己宣传的 Bonjour 名称(定义在共享首选项)。

那么为什么要查找 DNS 名称呢?我的猜测是您的本地路由器/DHCP 服务器/DNS 服务器正在根据其以太网硬件地址(大概是 b8:8d:12:0c:d4:b2)动态为其分配一个。您可以调整路由器的设置来阻止它这样做,或者您可以设置计算机的 DHCP 客户端 ID(在网络首选项、高级设置中)来控制它分配给您的名称。

  • 这对我最有帮助。我的机器正在显示这种行为,关键是它似乎自发地更改了名称,因为我以前从未见过不同的名称。所以我只是浪费了 90 分钟检查病毒和磁盘问题等。很高兴知道我可以安全地停止浪费时间。 (2认同)

小智 5

为我:

  • scutil --get HostName是空的,
  • /etc/hosts很好,
  • /etc/hostconfig不存在,
  • Bonjour 这个名字是对的,
  • 所有首选项文件都是正确的,但hostname会顽固地使用默认名称(iMac在我的例子中)。

事实证明,错误名称与以太网接口(但与 WiFi 接口无关)上的 DHCP 租约相关。为了说服 DHCP 租约使用新名称,我必须:

  1. 转至系统偏好设置 --> 网络 --> 以太网,并将“配置 IPv4”下拉菜单更改为“关闭”。
  2. 单击“应用”。
  3. 单击“高级”,然后选择 WINS 选项卡。
  4. 将 NetBIOS 名称(显示旧名称)更改为新名称。
  5. 单击“确定”,然后单击“应用”。
  6. 最后,将“关闭”改回“使用 DHCP”。

一旦建立了新的租约,但路由器和本地计算机报告了新名称,并且不再有旧名称的迹象。

错误的 DHCP 租约肯定是罪魁祸首,但在续订租约之前修复 NetBIOS 名称可能是关键。