Почему мой RaspberryPi не может выполнять эти основные команды как пи?

353
kiriMCplay

Как сказано в заголовке, мой RaspberryPi не может выполнять некоторые базовые команды (например, ls, mkdir, su, ...) с пользователем 'pi'. Я всегда получаю следующее в качестве вывода:

-bash: /home/pi/bin/ls: Cannot execute binary file: Exec format error 

Если я выполняю sudo эти команды или выполняю их для любой другой учетной записи, даже для учетной записи, которая не может даже sudo, она работает нормально, и она уже работала нормально при моем последнем входе в систему (ОК, около 2 недель назад ...), и я не не устанавливал никакого нового программного обеспечения (я читал, что это часто вызывает эту проблему), я использовал только уже хорошо известное программное обеспечение, которое использует YouTube-API для загрузки видео. Я попытался решить проблему с помощью перезагрузки (это не часто работает, но иногда помогает: D). Я читал об измененной переменной $ PATH и думаю, что это может быть правдой, но я не самый большой профессионал и не могу доказать это, так что вот вывод:

echo $PATH /home/pi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games 

Как я уже сказал, я думаю, что это действительно может быть причиной (это действительно сбивает с толку, я даже не знаю, есть ли такие папки), но даже если бы это было так, я бы не знал, на что это можно изменить, поэтому я думаю, Вы могли бы сказать мне, что это что-то другое или как я должен установить переменную $ PATH. И, может быть, как это могло измениться, я не делал это вручную.

Я надеюсь, что кто-то может помочь мне. Заранее спасибо, нуб

РЕДАКТИРОВАТЬ: Я решил проблему в некотором роде с помеченным ответом. Я просто удалил папку / home / pi / bin ( /bin/rm /home/pi/binчтобы использовать rmin /bin/) и вышел из системы ( exit), чтобы снова запустить ~ / .profile. И я также смог восстановить, как я получил эти файлы там: за несколько дней до того, как я отменил свой сервер, поэтому я использовал свой RasPi для резервного копирования файлов на будущее. Я создал папку с именем oldServer, но не смог cdв ней и просто отредактировал getфайлы через SFTP, чтобы они вошли в / home / pi /, также папку bin. Таким образом, при каждом входе в систему ~ / .profile думал, что это будет специальное мусорное ведро и поместит его в него $PATH. RasPi не смог выполнить эти двоичные файлы там, потому что они были также из Debian, но не из Raspbian в частности, только Debian8. Спасибо за ваши комментарии и ответы!

2
Как вы узнали, что у вас есть `ls` в` / home / pi / bin`? Они должны быть в `/ bin` om Raspbian, IIRC. Похоже, у вас есть файлы какой-то другой архитектуры в `/ home / pi / bin`. muru 5 лет назад 0

1 ответ на вопрос

0
Daniel B

Уберите из своего $PATHто /home/pi/binчто впереди. Если вы уверены, что вам это нужно, переместите его назад.

$PATHПеременная, вероятно, установлен в ~/.profile, ~/.bash_profile, ~/.bashrcили что - то подобное.

Добавляйте только в начало, $PATHесли вам абсолютно необходимо переопределить системные команды.

После этого вы должны посмотреть, как несовместимые исполняемые файлы попали в него ~/bin.

Я не изменил это вручную, как я уже сказал, но я попробую это. kiriMCplay 5 лет назад 0

Похожие вопросы