bash - such - usr bin perl m defekter interpreter datei oder verzeichnis nicht gefunden




-bash:./my_script:/bin/bash ^ M: schlechter Interpreter: Keine solche Datei oder Verzeichnis (8)

Diese Frage hat hier bereits eine Antwort:

Ich lerne durch dieses Tutorial Bash-Skripte zu lernen, um ein paar Aufgaben für mich zu automatisieren. Ich verbinde mich mit einem Server mit Putty.

Das Skript in .../Documents/LOG lautet:

#!/bin/bash
# My first script
echo "Hello World!"

Und ich habe Folgendes für Lese- / Schreib- / Ausführungsberechtigungen ausgeführt

chmod 755 my_script

Wenn ich dann ./my_script eintrage, ./my_script ich den Fehler im Titel.

Einige ähnliche Fragen wollten diese sehen, also denke ich, dass sie helfen könnten:

which bash

/ bin / bash

und

echo $PATH

/ usr / local / sbin: / usr / lokal / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / bin / mh

Ich habe versucht, das aktuelle Verzeichnis zu PATH hinzuzufügen, aber das funktioniert nicht ..



Dies wird durch das Bearbeiten der Datei in Windows und das Importieren und Ausführen in Unix verursacht.

dos2unix -k -o filename sollte den Trick machen.


Für Eclipse Benutzer können Sie die File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶) entweder direkt im Menü File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶) :

Oder ändern Sie den New text file line delimiter für die New text file line delimiter in " Other: Unix im Window > Preferences > General > Workspace :


Ich entwickle gleichzeitig auf Windows und Mac / Linux und vermeide diesen ^ M-Fehler, indem ich einfach meine Skripte wie in Windows laufe:

$ php ./my_script

Keine Notwendigkeit, Zeilenenden zu ändern.


Ich konnte das Problem lösen, indem ich das Skript in Gedit öffne und es mit der richtigen Line Ending Option speichere:

Datei> Speichern unter ...

Unten links in der Eingabeaufforderung Save As unter befinden sich Dropdown-Menüs für Zeichencodierung und Zeilenende. Ändern Sie die Zeilenende von Windows zu Unix/Linux dann Speichern.


Ihre Datei hat Windows-Zeilenenden, was Linux verwirrend ist.

Entfernen Sie die falschen CR-Zeichen. Sie können es mit dem folgenden Befehl tun:

 $ sed -i -e 's/\r$//' setup.sh

Problem ist mit DOS-Zeilenende. Folgendes wird es für Unix konvertieren

dos2unix file_name

NB: Möglicherweise müssen Sie dos2unix zuerst mit yum install dos2unix

Eine andere Möglichkeit, dies zu tun, ist die Verwendung des Befehls sed , um die Zeilenendezeichen der DOS-Zeile nach dem Unix-Format zu suchen und zu ersetzen:

$sed -i -e 's/\r$//' your_script.sh

Wenn Sie unter Windows oder Mac Sublime Text verwenden , um Ihre Skripte zu bearbeiten:

Klicken Sie auf View > Line Endings > Unix und speichern Sie die Datei erneut.





bash