web-dev-qa-db-fra.com

"impossible d'exécuter le fichier binaire" lors de la tentative d'exécution d'un script Shell sous Linux

Je suis très nouveau sur Linux et Shell scriprting . J'essaie de lancer un shellscript à partir de Secure Shell (ssh) sur linux en utilisant les commandes suivantes:

chmod +x path/to/mynewshell.sh

sh path/to/mynewshell.sh

Je reçois cette erreur: 

path/to/mynewshell.sh: path/to/mynewshell.sh: cannot execute binary file.

Essayé en utilisant cette commande: 

bash path/to/mynewshell.sh

J'ai la même erreur.

Essayé avec cette commande: su - myusername sh path/to/mynewshell.shIl demande mon mot de passe et me donne cette erreur: no such file or directory.

1. Le résultat de cat -v path/to/mynewshell.sh est: ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ Rscript "$ dir" /diver_script.R Done

2.Quand j'ai essayé 'moins de chemin/à/mynewshell.sh', j'ai eu ceci sur mon terminal:

#!/bin/bash/Rscript^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
for dir in /path/to/* ; do 
^@^@^@^@^@^@^@^@Rscript "$dir"/myRscript.R
done

3.Quand j'ai couru le chemin du fichier/vers/mynewshell.sh: j'ai ce "texte exécutable du script shell Bourne-Again"

S'il vous plaît donner des conseils sur la façon dont je peux essayer d'exécuter le shellscript.

5
R Bud

chmod -x supprime les autorisations d'exécution d'un fichier. Faire ceci:

chmod +x path/to/mynewshell.sh

Et le lancer avec

/path/to/mynewshell.sh

Comme le rapport d'erreur le dit, votre script n'est pas réellement un script, c'est un fichier binaire.

10
Jahid

La même erreur se produisait lorsque j'exécutais mon script Shell via un interpréteur bash dans PowerShell. J'ai exécuté dos2unix myscript.sh sur le script Shell, et maintenant, il fonctionne correctement.

1
Andrew

À partir d'un duplicata proposé:

run_me.sh.xz: run_me.sh.xz: cannot execute binary file

En effet, le fichier est compressé, comme indiqué par l'extension .xz. Vous devez supprimer la compression avant de pouvoir utiliser le fichier.

xz -d ./run_me.sh.xz
chmod +x ./run_me.sh  # probably not necessary if you already did that before
./run_me.sh

D'autres schémas de compression tels que gzip (extension .gz), bzip2 (extension .bz2), etc. se comportent de la même manière; il suffit de connaître le nom de la commande pour la décompresser, ce qui est bien entendu généralement facile à rechercher sur Google.

0
tripleee