Когда я открываю терминал, я получаю «У меня нет имени!» быстрый

Внезапно сегодня утром я открываю окно терминала и получаю следующее:

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

** Я не число! Я человек! **

Что дает? Кто-нибудь знает, что мне нужно сделать, чтобы вернуть свое имя?

Я предполагаю, что здесь есть две проблемы, одна из которых заключается в том, что мое имя хоста не определено, а другая в том, что whoami сообщает мое имя как число.

Кстати, для тех, кто заинтересован, я вышел из системы (command-shift-Q), и после повторного входа в систему и перезапуска терминала проблема исчезла! Все еще интересно, что могло быть причиной этого, если не по какой-либо другой причине, кроме как для улучшения состояния моего McKnowledge.
Вы спрашиваете, почему имя хоста компьютера отображается в подсказке, или вы спрашиваете, почему компьютер называется «У меня нет имени!»?
Я спрашиваю, почему вдруг в моем приглашении bash отображается «У меня нет имени!» а не имя хоста. Возможно, это просто совпадение, что whoamiтакже сообщает мой номер, а не мое имя.
Что делать hostnameи id -pвозвращать?
моя система пришла в норму. Однако хорошее предложение, если это произойдет снова, я проверю их обоих!
Это случилось со мной дважды за последние пару недель. Прошлой ночью я запустил Verify Disk из Disk Utility и обнаружил ошибки. Я сделал Repair Disk по его инструкции. Вы можете попробовать это тоже. Возможно, наши диски плохо работают.
У меня бывает после пробуждения - 10.7.3 и 10.7.4. Почти 13-дюймовый MBP 2010, 8G ram и Intel SSD. Только перезагрузка решает эту проблему. Похоже на программную проблему.
То же самое произошло с моим Macbook air 2008, 8Gb, OSX 10.7.5. Я не крашил программы принудительно: только иногда Libreoffice, который не отвечал. Перезапуск помогает.
Я видел эту ошибку при попытке отправить ветку на Github. Мне потребовалось некоторое время, чтобы выяснить основную причину — я понял это только тогда, когда попытался проверить, совпадает ли мой открытый ключ с тем, что хранится на GH.

Ответы (10)

Что-то в памяти было повреждено, и сопоставление между вашим идентификатором пользователя (502) и вашим именем пользователя (ipd) было потеряно. Я видел, как это происходило (обычно, когда я вручную убивал зависшие системные процессы), хотя я не уверен, что именно вызывает это. launchdможет быть?

Поскольку это сопоставление утеряно, whoamiневозможно преобразовать ваш идентификатор в имя пользователя, поэтому он возвращает идентификатор, а ваше приглашение по умолчанию — «У меня нет имени!» сообщение, потому что у вас фактически нет имени.

Выход из системы и повторный вход в нее могут исправить ситуацию, но перезапуск — лучший способ (как вы обнаружили).

По сути, это симптом другой проблемы, а не проблема сама по себе.

Я хотел бы объяснить, как это сопоставление теряется, но я никогда не копал достаточно глубоко, чтобы понять это.
Это только что случилось со мной снова. Я убил launchd, и я был сейчас 501, что помешало мне использовать sudo. Я до сих пор не знаю, launchdперезапустится ли он сам или на что еще повлияет его отсутствие.
Как бы то ни было, я только что столкнулся с этим на машине с Linux, поэтому я предполагаю, что основной причиной является что-то в bash.strings /bin/bash | grep "I have"
Это также происходит в песочницах, где обычно нет whoami или даже его зависимостей, попробуйте which whoamiпосмотреть, где он находится, в моем случае я ldd /usr/bin/whoamiнашел зависимости, посмотреть, есть ли они у вас и не повреждены ли они.

Я вижу, что это старая тема, но вот решение этой проблемы (без перезагрузки всего компьютера).

Проблема заключается в opendirectorydдемоне, и самые ранние отчеты датируются началом 2011 года. Перезапуск демона (переключение пользователей на администратора с помощью быстрого переключения пользователей) устраняет проблему.

Во время написания этого ответа я нашел аналогичный вопрос в Serverfault здесь , который также охватывает мой ответ.

Это не сработало для меня. Мои симптомы, возможно, немного отличаются. У меня открыто несколько окон терминала, и каждое существующее окно терминала потеряло свое сопоставление имени пользователя, но каждое новое окно, похоже, имеет его без проблем. Уничтожение (он же перезапуск) opendirectoryd не помогло. В «неудачных» терминалах мне также не хватает сопоставления групп для com.apple.sharepoint.group.2и access_bpf, но не групп, перечисленных в /etc/group. Мне кажется, что старые терминальные процессы (и кто знает что еще) потеряли доступ к opendirectoryd, а не сам opendirectoryd вышел из строя.

Это происходит со мной случайным образом, когда я выхожу из режима ожидания (т.е. открываю свой ноутбук). Выход из системы или перезагрузка - единственный способ исправить это. Я не знаю точно, что вызывает это. Пока я печатаю, это происходит прямо сейчас. Как спрашивал комментарий в исходном посте, я побежал, id -pи он разбился. (Отчет о сбое: http://pastebin.com/nmFFQELq )

Консольные команды:

whoami— возвращает 501

id -p— вылетает

cat /etc/passwd— моего пользователя нет в документе.

Любая попытка ssh завершается ошибкой:

Ты не существуешь, уходи!

Я также проверил консоль, после пробуждения появляется куча случайных ошибок «Socket notconnected» (что, я думаю, может быть нормальным, поскольку беспроводное соединение не подключается сразу) от таких программ, как Dropbox. Однако появляется интересная ошибка:

12.04.12 8:37:09.045 PM coreservicesd: _scserver_ServerCheckin: ошибка проверки uid клиента; getpwuid(501) == NULL

12.04.12 8:37:09.400 PM coreservicesd: _scserver_ServerCheckin: ошибка проверки uid клиента; getpwuid(501) == NULL

Все еще не уверен, что вызывает это, но решил поделиться этой диагностикой.

У меня MacBook Pro середины 2009 года с установленной версией 10.7.3.

Посмотрите, настроены ли права доступа к файлу /etc/passwdследующим образом:

-rwxr--r--

потому что он читает имя пользователя из passwdфайла.

Была 644, а не 744. Установка на 744 не помогла.

Сегодня у меня была такая же непонятная проблема (Lion 10.7.5), и dscacheutil -flushcacheя исправил ее для себя, как было предложено в комментарии в каком-то блоге .

Я решил проблему, используя iterm=>preferences=>URL_handler и подключив whoami к моему имени пользователя.. после перезапуска iterm проблема исчезла

Убедитесь, что права доступа к файлу /etc/passwd равны 644.

chmod 644 /etc/passwd

После изменения разрешений выйдите из системы и войдите снова

Интересно, что в других ответах говорится, что разрешения 644/744 не подходят или не являются полными для решения этой проблемы. Есть ли ссылка на то, какими должны быть правильные разрешения и когда от них отклоняться?

Моя проблема заключается в разрешении в архиве passwd, старое разрешение -rw------- 1 root root 1280 9 июня 15:41 passwd Я использовал команду «chmod a+r /etc/passwd», и теперь все пользователи можете прочитать этот архив. -rw-r--r-- 1 root root 1280 9 июня 15:41 passwd Выйдите из системы и попробуйте. знак равно

У меня была эта странная проблема в моей Ubuntu, когда я создал нового пользователя

Я просмотрел файл /etc/passwd

`cat /etc/passwd`

Я видел, что в моей записи были следующие детали -

`ajit:x:1002:1002::/home/ajitp:/bin/sh`

Я изменил его следующим образом -

`ajit:x:1002:1002::/home/ajitp:/bin/bash`
Это не дает ответа на вопрос. Когда у вас будет достаточно репутации , вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют разъяснений от спрашивающего . - Из обзора

Перейдите в домашнюю папку в Терминале и запустите . ~/.bashrc.

Оно работает!!

Я не думаю, что повторный поиск .bashrc решает проблему здесь...