打开终端时,提示“我没有名字!”


39

突然,今天早上,我打开一个终端窗口,并得到以下信息:

I have no name!@macbook:~$ whoami
502

**我不是数字!我是人类!**

是什么赋予了?有人知道我需要做些什么才能找回我的名字吗?

我想这里有两个问题,一个是我的主机名未定义,另一个是whoami将我的名字报告为数字。


2
顺便说一句-对于那些感兴趣的人,我注销了(command-shift-Q),然后重新登录并重新启动终端,问题就消失了!如果除了提高我的McKnowledge的状态外没有其他原因,他仍然对可能造成这种情况的原因感兴趣。
2012年

您是在问为什么在提示中显示计算机主机名,还是在问为什么计算机被命名为“我没有名字!”?
克里斯·佩奇

我问为什么突然间我的bash提示显示“我没有名字!” 而不是主机名。也许这只是一个巧合,whoami也在报告我的电话号码而不是我的名字。
2012年

1
什么hostnameid -p返回?
CajunLuke 2012年

我的系统已恢复正常。很好的建议,如果再次发生,我会同时检查它们!
2012年

Answers:


24

内存中的某些内容已损坏,并且您的用户ID(502)和用户名(ipd)之间的映射丢失了。我已经看到了这种情况的发生(通常是当我手动杀死挂起的系统进程时),尽管我不确定是什么原因造成的。 launchd也许?

由于该映射丢失,whoami因此无法将您的ID转换为用户名,因此返回ID,并且您的提示默认为“我没有名字!” 消息,因为您实际上没有名字。

注销并重新登录可能会解决,但重新启动是最好的方法(如您所发现的)。

基本上,这是另一个问题的征兆,而不是其本身的问题。


1
我希望我能解释一下该映射是如何丢失的,但是我从来没有深入研究过。
Bobson 2012年

这又发生在我身上。我曾经杀死过launchd我,现在却如此501,这阻止了我的使用sudo。我仍然不知道是否launchd会重新启动自身,或者不运行会影响什么。
Bobson

对于它的价值,我只是在Linux机器上遇到过,所以我猜想根本原因是bash中的某些东西。strings /bin/bash | grep "I have"
Digital Trauma 2015年

这也发生在沙盒上,通常没有whoami甚至没有它的依赖项,尝试which whoami查看它在哪里,在我的情况下,我确实ldd /usr/bin/whoami找到了依赖项,看看是否有依赖项,或者它们是否损坏。
RomuloPBenedetti

11

我看到它是一个旧线程,但这是解决此问题的方法(无需重新启动整个计算机)。

问题出在opendirectoryd守护程序中,最早的报告日期是2011年年初。重新启动守护程序(通过“快速用户切换”以管理员身份切换用户)可以解决此问题。

在编写此答案时,我在Serverfault的此处找到了类似的问题,该问题也涵盖了我的答案。


这对我不起作用。我的症状可能有点不同。我打开了许多终端窗口,每个现有的终端窗口都丢失了用户名映射,但是每个窗口似乎都没有问题。杀死(也称为重新启动)opendirectoryd没有帮助。在“失败”的终端,我也很想念组映射com.apple.sharepoint.group.2access_bpf,但不是在上市集团/etc/group。在我看来,旧的终端进程(还有谁知道其他什么)已经失去了对opendirectory的访问权限,而不是opendirectoryed本身已经失败。
ghoti

3

当我从待机状态恢复时(即打开笔记本电脑),这会随机发生在我身上。注销或重新引导是我修复它的唯一方法。我不知道是什么原因造成的。当我输入时,它正在发生。当原始帖子中的评论问到时,我跑了id -p下来,然后崩溃了。(崩溃报告:http : //pastebin.com/nmFFQELq

控制台命令:

whoami -返回501

id -p —崩溃

cat /etc/passwd -我的用户不在文档中。

任何ssh尝试都会失败,并显示以下错误:

你不存在,走开!

我还检查了控制台,从唤醒中,从Dropbox之类的程序中出现了一堆随机的“套接字未连接”错误(我认为这可能是正常的,因为无线无法立即连接)。出现一个有趣的错误:

12/4/12 8:37:09.045 PM coreservicesd:_scserver_ServerCheckin:客户端uid验证失败;getpwuid(501)== NULL

12/4/12 8:37:09.400 PM coreservicesd:_scserver_ServerCheckin:客户端uid验证失败;getpwuid(501)== NULL

仍然不确定是什么原因造成的,但我想我会分享这些诊断信息。

我使用的是2009年中安装的10.7.3 MacBook Pro。


1

查看文件权限/etc/passwd是否设置如下:

-rwxr--r--

因为它从passwd文件中读取用户名。


它是644,而不是744。设置为744并没有帮助。
ejmin

0

我通过使用iterm => preferences => URL_handler并将whoami连接到我的用户名..解决了问题,在iterm上重启后,问题不再存在


0

我今天遇到了同样令人困惑的问题(Lion 10.7.5),dscacheutil -flushcache并为我解决了这个问题,正如某些博客中的评论所建议的那样。


-1

我的问题是passwd存档中的权限,旧的权限是-rw ------- 1 root root 1280 Jun 9 15:41 passwd我使用了命令“ chmod a + r / etc / passwd”,现在所有用户可以读取此存档。-rw-r--r-- 1 root root 1280 Jun 9 15:41 passwd注销用户并尝试。=)


-2

转到Terminal中的主文件夹并运行. ~/.bashrc

有用!!


5
我认为外包.bashrc不能解决这里的问题...
nohillside
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.