![Linux 上的任何 sudo 命令都会出现“Exec 格式错误”](https://linux22.com/image/177657/Linux%20%E4%B8%8A%E7%9A%84%E4%BB%BB%E4%BD%95%20sudo%20%E5%91%BD%E4%BB%A4%E9%83%BD%E4%BC%9A%E5%87%BA%E7%8E%B0%E2%80%9CExec%20%E6%A0%BC%E5%BC%8F%E9%94%99%E8%AF%AF%E2%80%9D.png)
每当我使用涉及 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
)解决了问题。