bash fehler?

... komplette Frage anzeigen

3 Antworten

Hallo

bash: ./start.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden

zeig doch mal:

cat start.sh

Damit wir uns ein Bild davon machen können wie das Script arbeitet bzw. arbeiten soll.

was ist da der Fehler?

Da steht "defekter Interpreter"; es sollte aber in der ersten Zeile stehen:

#!/bin/bash

ohne Leerzeichen oder etwas wegzulassen. Du kannst auch die Angabe des Interpeters ganz weglasen und das Script so starten:

bash start.sh

Dann wäre es egal ob die Datei eine Angabe macht und ob die Datei ausführbar ist, weil Du ja den Interpreter (die bash) selbst startest.

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von guenterhalt
01.12.2016, 08:10

mit  cat start.sh wird man da nicht weiter kommen, denn viele Editoren oder Anzeigeprogramme benutzen die Kombination 0d0aH wie 0dH.
Sicherheit schafft da nur z.B. ein Hex-Editor wie ghex.

bash start.sh wird dann vielleicht die 1. Zeile überspringen, sollte dann aber schon die nächste Zeile als Fehler interpretieren.

0
Kommentar von Mrciller2
01.12.2016, 13:33

root@5825c732c828f5 lobby $ cat start.sh
#!/bin/bash

BINDIR=$(dirname "$(readlink -fn "$0")")
cd "$BINDIR"

while true
do
java -server -Xms1024M -Xmx1024M -jar spigot-1.8.8.jar

echo -e 'If you want to completely stop the server process now, press STRG-C before the\ntime is up!'
echo "Rebooting in:"
for i in 5 4 3 2 1
do
echo "$i...

0

das ist kein bash-Fehler. Du hast mit 100% Sicherheit die Datei mit einem Windows-Editor bearbeitet und dann in das Linux-System übernommen.

Innerhalb eines Computers passiert so etwas kaum noch, denn die Tools erkennen das selbst.
Bei Übertragungen mit ftp und der Option "bin" wird  jedes Byte übertragen, so auch die "Microsoft-Zeilen-Ende-Kennung".
Mit der Option "ascii" ist das  anders. Beide FTP-Programme (Sender + Empfänger) wissen dann, was zu tun ist.

Antwort bewerten Vielen Dank für Deine Bewertung

Falsche Zeilenendemarkierungen in dem Script (wahrscheinlich im "Windows"-Format abgespeichert, also mit "carriage return + line feed").

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?