我在“系统偏好设置”>“共享”中的计算机名称设置为“ archos”,但在终端上显示为“ iphone”。在我加载Xcode进行iPhone开发之后,它才开始这样做。
Last login: Mon Nov 7 14:46:55 on ttys001
iphone:~ travis$
任何想法可能是什么原因造成的?
我在“系统偏好设置”>“共享”中的计算机名称设置为“ archos”,但在终端上显示为“ iphone”。在我加载Xcode进行iPhone开发之后,它才开始这样做。
Last login: Mon Nov 7 14:46:55 on ttys001
iphone:~ travis$
任何想法可能是什么原因造成的?
Answers:
发生这种情况是完全正常的。当您远程登录Terminal时,bash会进行反向DNS查找。如果在您要连接的网络上未指定主机名并且DHCP服务器没有答复,或者对远程DNS服务器的反向查找无法解决,则该名称将是相同的。
您可以在终端中使用以下命令轻松地覆盖默认设置:
# sudo scutil --set HostName archos
您可以使用以下方法进行检查:
# nslookup nn.nn.nn.nn
( or )
# host nn.nn.nn.nn
(其中nn表示您的Mac的IP地址)
sudo scutil --set HostName ''
。
HostName
建议不要设置,因为它会创建一个单独的值,即使您以后尝试通过更改主机名,该值也将保留下来System Preferences > Sharing
。相比之下,设置会LocalHostName
更新相同的值,并且通常也会由shell和hostname
(该ComputerName
值应同时更新)获取。还是设置HostName
方式在这里是有利的?
hostname -f
您可能还想使用scutil命令更改其他一些内容:
sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
scutil
set HostName
,将ComputerName
和LocalHostName
都设置为我的新名称(在Mavericks中)。很高兴知道这些其他设置是否存在。
HostName
,因为这样做会使该值保持不变,即使您以后尝试通过System Preferences更改主机名时也是如此。反之,LocalHostName
就是拿起用壳hostname
,所以HostName
永远不会需要。
sudo scutil --set LocalHostName ''
已删除的LocalHostName,现在我的提示是使用ComputerName,它具有正确的值。
有用于壳(两个潜在原因$HOSTNAME
变量,'\h'
在$PS1
)和hostname
报告,从所示的一个不同的主机名效用System Preferences > Sharing
:
sudo scutil --set HostName newName
用于永久更改主机名-不幸的是,此值与“ 系统偏好设置”在幕后设置的值无关LocalHostName
- 即使man hostname
建议使用此方法,也不要出于此原因使用它;运行sudo scutil --set HostName ''
以将其删除,此时LocalHostName
应再次报告;有关背景,请参阅@Lauri Ranta的这篇文章。
[ 更新:下面不再是真实的OSX 10.10 ]如果你的/etc/hosts
文件有你的机器的IP地址相匹配的条目,这将报告的条目名称。
仅当以上两个都不成立时,shell才会hostname
反映通过系统偏好设置设置的值。
如果要从shell更改主机名,请运行以下两项:
sudo scutil --set LocalHostName <newName>
sudo scutil --set ComputerName <newFriendlyName>
其中<newFriendlyName>
可以是更友好的版本(空格,标点符号)<newName>
(仅字母数字和破折号)。
sudo scutil --set HostName ''
首先运行(案例),并确保其中没有条目/etc/hosts
?scutil --get HostName
应该报告Hostname: not set
。
scutil --get HostName HostName: not set
/ etc / hosts看起来
PS1
变量不是使用硬编码的主机名,而不是使用\h
,不是吗?顺便说一句:/etc/hosts
不再参与协商OSX 10.10(我已经更新了我的答案)。
sudo scutil --set HostName ''
再次删除主机名(通过按建议的方式将其设置为空字符串)可以使OS X将计算机名映射到其IP地址(例如,现在可以使用ping <computername>
)。
我同意杰弗里·胡佛的秘诀是正确的答案。刷新DNS缓存并重新启动Mac也是一个不错的步骤。这是Jeff Hoover的回复的变体:
sudo -i
Password:
for n in HostName ComputerName LocalHostName; do
scutil --set $n new_hostname
done
exit
-
:必须--set
工作。另外,正如我在Jeff的回答中所评论的那样:最好不要设置HostName
。
如一个单独的答案中所述,另一种选择是覆盖默认的PS1提示符,例如执行以下行(或将其添加到〜/ .bash_profile文件中):
$ PS1="$(scutil --get ComputerName):\W \u\\$ "
参考:
https://superuser.com/a/414903/39364
http://www.cnet.com/news/keep-your-command-prompt-host-name-static-in-os-x-and-other-unix-systems/
我有一个问题,只有外壳本身(zsh
以我为例)无法显示正确的计算机名称。只需重启外壳即可解决:
exec /bin/zsh