当我打开终端时,我希望它显示我的 PS1 的设置\h:\W \u\$
。
但是它没有显示我的主机名Eriks-MacBook
,如系统偏好设置中所显示的。
相反,它显示一个随机字符串unknownb88d120cd4b2
。
如何修复或重置此问题?
这台机器是全新的,并且首选项/设置没有改变。
答案1
Gordon 给出了很好的回答到您的主机名的来源。
如果您希望在“系统偏好设置”->“共享”->“计算机名称”中设置的名称显示在提示符中,请将其替换\h
为$(scutil --get ComputerName)
。例如,我的提示符设置为
PS1="[\u@:$(scutil --get ComputerName) \W]\\$ "
答案2
终端正在向您显示 BSD 主机名的第一个标签(假设您的 shell 是 BASH)。如果您的 BSD 主机名是,yourhostname.mynetwork.com
则终端将仅显示yourhostname
-
那么 BSD 主机名从何而来?它可以来自几个地方:
• 来自文件:/etc/hostconfig
• 否则来自文件/Library/Preferences/SystemConfiguration/preferences.plist
:(系统 ▸ 系统 ▸ 主机名)
• 否则,将对您的主 IP 地址进行反向 DNS 查询的结果(因此,您可能会注意到,当您访问网吧时显示的主机名与在家中连接时显示的主机名完全不同)
• 否则您的“Bonjour”主机名系统偏好设置 > 共享(preferences.plist
再次...系统 ▸ 网络 ▸ 主机名 ▸ LocalHostName)
• 最后,如果以上均未设置,则 BSD 主机名将简单地为localhost
顺便说一句,不久前我在这里回答了同样的问题:Mac OS X 终端 - 提示名称从何而来
答案3
OS X 尝试了多种方法来查找其“主机名”。不幸的是,我不知道确切的列表(和顺序),但我认为这里发生的事情是它发现了与其 IP 地址关联的 DNS 名称,并使用该名称代替它为自己宣传的 Bonjour 名称(在共享偏好设置中定义的名称)。
那么它为什么会找到 DNS 名称呢?我猜是您的本地路由器/DHCP 服务器/DNS 服务器根据其以太网硬件地址(可能是 b8:8d:12:0c:d4:b2)动态地为其分配一个名称。您可能能够调整路由器的设置以阻止它这样做,或者您可能可以设置计算机的 DHCP 客户端 ID(在“网络首选项”的“高级设置”中)来控制它为您分配的名称。
答案4
不确定您是否仍遇到问题,这个问题似乎已在 Yosemite 和 Sierra 之间得到修复。
对于新电脑,我首先从“共享系统偏好设置”开始,输入 [新名称] 作为所需的计算机名称。我还在每个网络接口的所有活动 DHCP 客户端 ID 字段中输入 [新名称]。完成此操作后,我打开终端以确认它报告了类似的名称,某些字符是不允许的,因此系统会在必要时修改名称。您可以使用以下步骤更改名称,只需将 [新名称] 块替换为所需的计算机名称即可。
- 打开终端
- 在提示符下输入以下内容- sudo scutil --set HostName [新名称]
- 打开一个新的终端窗口来确认新名称已被接受。
如果我不喜欢这个名字,我会继续上述操作,然后再将其绑定到活动域。