如何解决 "无法执行二进制文件 "的错误?
当我用SSH登录时,只能看到这样的…..
-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected
我在这里什么都做不了。halt
, poweroff
, reboot
, command not found
, &007等命令都会返回&007.
我该怎么解决这个问题?我使用的是Debian Squeeze Linux
当我用SSH登录时,只能看到这样的…..
-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected
我在这里什么都做不了。halt
, poweroff
, reboot
, command not found
, &007等命令都会返回&007.
我该怎么解决这个问题?我使用的是Debian Squeeze Linux
试着用./executablefilename来运行它,而不是用sh executeablefilename。它毕竟不是一个shell脚本。
问题是运行不同处理器架构的二进制文件。你可以使用objdump(来自binutils)来检查二进制文件的架构。你可以使用uname来检查机器的架构。
例如,我在安装FF.Communicator–一个用于chrome的firefox插件(这样我就可以运行使用java小程序的页面)时,遇到了这个错误 “无法执行二进制文件"。
使用这些工具,你可以检查机器的架构和二进制文件 - 不只是intel架构,而是任何处理器。
对于Mac OSX用户,你可以使用 "file "命令查找特定文件的架构信息:
$ file filename_here
我在这里胡乱猜测了一下,但看起来好像发生了以下情况:
bash
运行你的~/.profile
或~/.bashrc
为你设置环境(这是正常的)。在某个时候,它试图执行/bin/id
来获取你的uid,结果失败了,导致整数表达式错误,在它设置好你的$PATH
之前终止脚本。因为你的$PATH
没有设置好,所以bash只能运行指定完整路径的命令。使用export PATH=/bin:/usr/bin:/sbin:/usr/sbin
来修复$PATH
问题,直到你能修复/bin/id失败的根本原因。
这意味着你正在尝试用你的bash脚本执行一个二进制文件,而这个二进制文件并不是你想运行的那样。在一个非常简单的例子中,如果你尝试运行像
$ bash w
/usr/bin/w: /usr/bin/w: cannot execute binary file
这样的 “w "命令,你可能会遇到同样的方法,或者从你的代码片段来看,你可能会遇到同样的方法。
而对于你的其余命令,Al这些停止、关机、重启等命令都是根目录下的命令,需要超级用户来运行并执行所需的操作。
二进制文件由处理器能够理解的机器指令组成。你的操作系统并不意味着同一可执行文件就会运行。在处理器指令集之间来回移动兼容通常会有很好的效果,如果它们不兼容,CPU就会无法理解指令。