web-dev-qa-db-de.com

"Kann keine Binärdatei ausführen", wenn Sie versuchen, ein Shell-Skript unter Linux auszuführen

Ich bin sehr neu in Linux und Shell scriprting . Ich versuche, ein Shellscript von Secure Shell (ssh) unter Linux mit den folgenden Befehlen auszuführen:

chmod +x path/to/mynewshell.sh

sh path/to/mynewshell.sh

Ich erhalte diesen Fehler: 

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

Versucht mit diesem Befehl: 

bash path/to/mynewshell.sh

Ich bekomme den gleichen Fehler.

Versuchte mit diesem Befehl: su - myusername sh path/to/mynewshell.shEs fragt nach meinem Passwort und gibt mir diesen Fehler: no such file or directory.

1.Das Ergebnis von cat -v pfad/to/mynewshell.sh lautet: ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ Rscript "$ dir" /diver_script.R Done

2.Wenn ich 'less path/to/mynewshell.sh' ausprobierte, bekam ich dies auf meinem Terminal:

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

3.Wenn ich den Dateipfad/to/mynewshell.sh ausgeführt habe: Ich habe dieses "Bourne-Again-Shell-Skripttext-Programm" erhalten.

Bitte geben Sie Hinweise, wie ich das Shellscript ausführen kann.

5
R Bud

chmod -x entfernt die Ausführungsberechtigung aus einer Datei. Mach das:

chmod +x path/to/mynewshell.sh

Und führe es mit

/path/to/mynewshell.sh

Der Fehlerbericht besagt, dass das Skript kein Skript ist, sondern eine binäre Datei.

10
Jahid

Beim Ausführen meines Shell-Skripts durch einen Bash-Interpreter in PowerShell wurde der gleiche Fehler angezeigt. Ich habe dos2unix myscript.sh mit dem Shell-Skript ausgeführt, und jetzt läuft es ok.

1
Andrew

Aus einem vorgeschlagenen Duplikat:

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

Dies liegt daran, dass die Datei komprimiert ist, wie durch die Erweiterung .xz angegeben. Sie müssen die Komprimierung entfernen, bevor die Datei verwendet werden kann.

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

Andere Kompressionsschemata wie gzip (Erweiterung .gz), bzip2 (Erweiterung .bz2) usw. verhalten sich ähnlich. Sie müssen nur den Namen des Befehls kennen, um ihn zu dekomprimieren, was normalerweise einfach zu google ist.

0
tripleee

Für alle anderen, die das Problem hatten, das ich hatte.

ich habe versucht, eine 16-Bit-Unicode-Textdatei auszuführen, die in ein Shell-Skript konvertiert wurde. Dies funktioniert nicht, da alle 16-Bit-Unicode-Textdateien zu Beginn einen 0xFFFE-Marker haben, der dafür sorgt, dass der Mac die Datei nicht mag Binärdatei ”Fehler.

öffnen Sie die Textdatei, klicken Sie oben auf "Format" und klicken Sie dann auf "Make Plain Text".

öffne dein Terminal Typ chmod 777 /path/to/file.sh

in Terminal stellen: /path/to/file.sh, um es auszuführen

0
user_number153

Dieses Skript ist einfach kein Shell-Skript. Ein Shell-Skript ist normalerweise lesbar und enthält Shell-Code. Die Ausgabe, die Ihr cat-Befehl anzeigt, sieht tatsächlich wie eine Art Binärdatei aus. Es könnte ein Problem bei der Dateikonvertierung beim Kopieren sein, aber für mich sieht es eher nach einer tatsächlichen Binärdatei aus.

Sie können überprüfen, wie es mit dem Dateibefehl identifiziert wird:

file path/to/mynewshell.sh

Beginnen Sie einfach mit einem sauberen Skript und schreiben Sie den Code neu. Sie möchten anscheinend nur einige R-Skripte in einem Verzeichnis ausführen?

Stellen Sie sicher, dass die R-Skripte auf den richtigen R-Skriptausführer verweisen.

0
Vincent Gerris