Solución:
Por lo general, ese mensaje de error significa que Linux no reconoce el archivo como un script de shell o como un archivo ejecutable.
Normalmente, la causa es ejecutar un ejecutable en la arquitectura incorrecta; si intenta ejecutar ejecutables x86 en una CPU ARM, aparece este mensaje.
Hizo /usr/bin/id
ser sobrescrito, posiblemente?
Intente ejecutarlo usando ./executablefilename en lugar de usar sh ejecutablefilename. Después de todo, no es un script de shell.
El problema es ejecutar un binario para una arquitectura de procesador diferente. Puede usar objdump (de binutils) para verificar la arquitectura de los binarios. Puede utilizar uname para comprobar la arquitectura de una máquina.
por ejemplo, encontré este error “no se puede ejecutar un archivo binario” al instalar FF.Communicator, un complemento de Firefox para Chrome (para que pueda ejecutar páginas que usan subprogramas de Java).
- objdump muestra que el binario es de 64 bits elf64-x86-64
-
tu nombre muestra que mi máquina es de 32 bits i686
$ ./FF.Communicator bash: ./FF.Communicator: no se puede ejecutar el archivo binario $ uname -mpio i686 i686 i386 GNU / Linux $ objdump -a ./FF.Communicator ./FF.Communicator: formato de archivo elf64-x86-64 ./FF.Comunicador
-
objdump en un binario que funciona en mi máquina muestra que es de 32 bits elf32-i386
$ objdump -a / bin / ls / bin / ls: formato de archivo elf32-i386
Con estas herramientas, puede verificar las arquitecturas de máquinas y binarios, no solo las arquitecturas Intel, sino cualquier procesador.
Para los usuarios de Mac OSX, puede encontrar la información de la arquitectura de un archivo específico usando el comando “archivo”:
$ file filename_here