每当我使用涉及 sudo 的命令时,我都会收到错误-bash: /usr/bin/sudo: cannot execute binary file: Exec format error
,即使对于像sudo reboot
或sudo ls
、 之类的命令sudo cd
,与可执行文件无关,这真的很烦人。在尝试通过运行 Linux 的 Raspberry Pi 重新启动后,它似乎突然出现,我还没有看到任何相关问题。
答案1
该错误不是关于reboot
或ls
,而是关于sudo
其本身。错误消息清楚地表明它来自 Bash,并提到了有问题的文件 ( /usr/bin/sudo
)。
错误“Exec format error”是错误代码,由系统调用ENOEXEC
返回exec*()
可执行文件的格式无法识别、适用于错误的体系结构,或者存在一些其他格式错误,这意味着它无法执行。
你的二进制文件有问题sudo
。它要么以某种方式损坏,要么您的二进制文件适用于错误的机器(例如 ARM 上的 x86 二进制文件)。file /usr/bin/sudo
也许能够告诉你一些事情(如果你有的话file
),与例如 的输出进行比较file /bin/ls
,假设可行。
另外,值得一提的是:您通过 sudo 运行的所有内容都与可执行文件有关。reboot
可能是/sbin/reboot
一个可执行的二进制文件;ls
可能是/bin/ls
一个可执行的二进制文件。并且sudo cd
可能会出现错误,因为大多数 Linux 发行版没有cd
二进制文件(它几乎没有用)。
答案2
我收到了上述错误消息,因为我的bash脚本-基于询问通行证可执行文件丢失哈希邦标记。
添加
#!/bin/bash
到脚本的开头(也许还可以使用 使脚本可执行chmod +x
)解决了问题。