我在“系统偏好设置”>“共享”中的计算机名称设置为“ 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"
scutilset 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