Por lo general, ese mensaje de error significa que Linux no reconoce el archivo como un script de shell o como un archivo ejecutable.
Por lo general, 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
sobreescribir, 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 usar uname para verificar la arquitectura de una máquina.
p.ej. Encontré este error "no se puede ejecutar el archivo binario" al instalar FF.Communicator, un complemento de Firefox para Chrome (para que pueda ejecutar páginas que usan applets de Java).
- objdump muestra que el binario es de 64 bits elf64-x86-64
-
nombre muestra que mi máquina es i686 de 32 bits
$ ./FF.Communicatorbash:./FF.Communicator:no se puede ejecutar el archivo binario $ uname -mpioi686 i686 i386 GNU/Linux$ objdump -a ./FF.Communicator./FF.Communicator:formato de archivo elf64-x86-64./ FF.Comunicador
-
objdump en un binario de trabajo en mi máquina muestra que es elf32-i386 de 32 bits
$ objdump -a /bin/ls/bin/ls:formato de archivo elf32-i386
Con estas herramientas, puede verificar arquitecturas de máquinas y binarios, no solo 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