Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12633|Antwort: 0

[Linux] /bin/bash^M: bad interpreter: No such file or directory

[Link kopieren]
Veröffentlicht am 13.06.2020 22:40:35 | | | |
Beim Ausführen eines Shell-Skripts wird folgender Fehler zurückgegeben:

-bash: ./log_job.sh: /bin/bash^M: schlechter Interpreter: Keine solche Datei oder Verzeichnis
Fehlerursachen:

.sh Skript unter dem Windows-System geschrieben ist und es daher unsichtbare Zeichen geben kann, ist es sehr wahrscheinlich, dass die Skriptdatei im DOS-Format ist, das heißt, das Ende jeder Zeile wird durch \r\n identifiziert und ihr ASCII-Code ist 0x0D 0x0A.

Der Fehler, der beim Ausführen eines Shell-Skripts angezeigt wird, liegt hauptsächlich daran, dass die Shell-Skriptdatei im DOS-Format ist, d. h. das Ende jeder Zeile wird mit \r\n identifiziert und das Ende der UNIX-Format-Datei mit \n.

Besondere Anmerkung: ^M ist nicht das ^ und der Buchstabe M, die durch die Taste Shift + 6 erzeugt werden, es ist ein Zeichen, sein ASCII ist 0x0D, die Erzeugung besteht darin, zuerst STRG+V zu drücken und dann Enter (oder STRG+M) zu drücken


Lösung

Es gibt mehrere Möglichkeiten, zu überprüfen, ob die Skriptdatei im DOS- oder UNIX-Format vorliegt.

(1) Überprüfen Sie das Format der Schrift: cat -A Dateiname Aus den Anzeigeergebnissen lässt sich erkennen, dass die Dateizeile mit DOS-Format ^M$ und die Dateizeile im Unix-Format $ ist.



(2) Ändern Sie das Format des Skripts: vi-Dateinamen, um die Datei zu öffnen und auszuführen:Set ff=UnixSetze die Datei auf Unix und führe sie aus:wq, gespeichert im UNIX-Format.

  (3) Überprüfen Sie das Format des Skripts: cat -Ein Dateiname Anhand des Anzeigeergebnisses können Sie beurteilen, dass die Dateizeile mit DOS-Format ^M$ ist und die Dateizeile, die im Unix-Format endet, $ ist.







Vorhergehend:SSIS Tutorial 1 Einführung in SQL Server Integration Services
Nächster:Nginx-Log-Splitting und -Löschung
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com