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

40

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

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

** Я не номер! Я человек! **

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

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

IPD
источник
2
Кстати - для тех, кто заинтересован, я вышел из системы (command-shift-Q) и после входа в систему и перезапуска терминала проблема исчезла! Все еще интересуюсь тем, что могло быть причиной этого, если только по какой-то другой причине, кроме как улучшить состояние моего McKnowledge.
апреля
Вы спрашиваете, почему имя хоста компьютера отображается в приглашении, или вы спрашиваете, почему компьютер называется «У меня нет имени!»?
Крис Пейдж
Я спрашиваю, почему, внезапно, моя подсказка bash отображает "У меня нет имени!" а не имя хоста. Возможно, это просто совпадение, whoamiкоторое также сообщает мой номер, а не мое имя.
IPD
1
Что делать hostnameи id -pвернуть?
CajunLuke
моя система вернулась в нормальное состояние. Хорошее предложение, хотя, если это случится снова, я проверю их обоих!
апреля

Ответы:

25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тебя не существует, уходи!

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

4/12/12 8: 37: 09.045 PM coreservicesd: _scserver_ServerCheckin: ошибка проверки идентификатора клиента; getpwuid (501) == NULL

4/12/12 8: 37: 21.400 coreservicesd: _scserver_ServerCheckin: ошибка проверки идентификатора клиента; getpwuid (501) == NULL

До сих пор не уверен, что это вызывает, но подумал, что поделюсь этими диагностиками.

Я нахожусь на MacBook Pro середины 2009 года с установленным 10.7.3.

Остин
источник
1

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

-rwxr--r--

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

Кристиан Легжеро
источник
Было 644, а не 744. Установка на 744 не помогла.
Эймин
0

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

vrwired
источник
0

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

LHF
источник
-1

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

Луис Оливейра
источник
-2

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

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

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