正如标题所述,我的 RaspberryPi 无法使用用户“pi”执行一些基本命令(例如 ls、mkdir、su 等)。我总是得到以下输出:
-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
使用rm
in /bin/
)并注销(exit
)并再次登录以运行 ~/.profile。而且我还能重建我如何将这些文件放入其中:在我取消服务器的几天前,所以我使用我的 RasPi 备份文件以备将来使用。我创建了一个名为 的文件夹oldServer
,但没有cd
进入其中并get
通过 SFTP 编辑文件,因此它们进入了 /home/pi/,也是文件夹bin
。因此,每次登录时, ~/.profile 都会认为它是一个特殊的 bin 并将其放入$PATH
。RasPi 无法在其中执行这些二进制文件,因为它们也来自 Debian,但不是来自 Raspbian,只是 Debian8。感谢您的评论和回答!
答案1
从你的 中删除$PATH
前面/home/pi/bin
的。如果你确定需要它,就把它移到后面。
该$PATH
变量可能设置在~/.profile
、~/.bash_profile
或~/.bashrc
类似内容中。
仅$PATH
当您绝对地必须覆盖系统命令。
此后,您应该研究一下不兼容的可执行文件是如何进入的~/bin
。