Di solito quel messaggio di errore significa che Linux non riconosce il file come script di shell o come file eseguibile.
In genere la causa è l'esecuzione di un eseguibile sull'architettura sbagliata:se provi a eseguire eseguibili x86 su una CPU ARM, viene visualizzato questo messaggio.
Ha fatto /usr/bin/id
essere sovrascritto, forse?
Prova a eseguirlo usando ./executablefilename invece di usare sh executablefilename. Dopotutto non è uno script di shell.
Il problema sta eseguendo un binario per un'architettura di processore diversa. Puoi usare objdump (da binutils) per controllare l'architettura dei binari. Puoi usare uname per controllare l'architettura di una macchina.
per esempio. Ho riscontrato questo errore "impossibile eseguire il file binario" durante l'installazione di FF.Communicator, un plug-in Firefox per Chrome (quindi posso eseguire pagine che utilizzano applet Java).
- objdump mostra che il file binario è elf64-x86-64 a 64 bit
-
uname mostra che la mia macchina è i686 a 32 bit
$ ./FF.Communicatorbash:./FF.Communicator:impossibile eseguire il file binario$ uname -mpioi686 i686 i386 GNU/Linux$ objdump -a ./FF.Communicator./FF.Communicator:formato file elf64-x86-64./ FF.Comunicatore
-
objdump su un binario funzionante sulla mia macchina mostra che è elf32-i386 a 32 bit
$ objdump -a /bin/ls/bin/ls:formato file elf32-i386
Usando questi strumenti puoi controllare le architetture di macchine e binari - non solo architetture Intel ma qualsiasi processore.
Per gli utenti di Mac OSX, puoi trovare le informazioni sull'architettura di un file specifico utilizzando il comando "file":
$ file filename_here