Heim  >  Artikel  >  Backend-Entwicklung  >  Die Lösung für das Problem, dass bei der Ausführung im Shell-Skript „keine solche Datei oder kein solches Verzeichnis vorhanden ist“.

Die Lösung für das Problem, dass bei der Ausführung im Shell-Skript „keine solche Datei oder kein solches Verzeichnis vorhanden ist“.

高洛峰
高洛峰Original
2017-01-09 13:42:524113Durchsuche

Der Grund dafür, dass „bad interpreter:No such file or Directory“ angezeigt wird, ist das Problem mit dem Dateiformat. Diese Datei wurde unter Windows geschrieben. Die Newline-Methode unterscheidet sich von Unix, ist jedoch überhaupt nicht sichtbar, wenn Sie sie nicht unter vim festlegen.

Problemanalyse:
1. Übertragen Sie die unter Windows geschriebene SHELL-Datei zur Ausführung und es erscheint eine Fehlermeldung.
2. Fehlermeldung: Schlechter Interpreter: Es gibt keine solche Datei oder kein solches Verzeichnis.

Ursache des Problems:
Da das Betriebssystem Windows ist und das Skript unter Windows bearbeitet wird, können unsichtbare Zeichen vorhanden sein. Die Skriptdatei ist im DOS-Format
, das heißt, das Ende jeder Zeile wird durch rn gekennzeichnet und ihre ASCII-Codes sind 0x0D, 0x0A> Lösung:
Es gibt viele Möglichkeiten zur Anzeige Diese Datei. DOS-Format, UNIX-Format oder MAC-Format
(1) vim-Dateiname
und verwenden Sie dann den Befehl: set ff
, um die Wörter dos oder unix anzuzeigen Verwenden Sie „Set ff=unix“, um das Unix-Format zu erzwingen. Speichern Sie es dann und beenden Sie es, um es auszuführen.
Sie können
1. unix2dos oder dos2unix verwenden, um Textdateiformate auf verschiedenen Plattformen zu konvertieren. In djgpp sind die Namen dieser beiden Programme dtou und utod unix, d Stellt dos dar
2. Sie können dazu auch Tools wie sed verwenden:

Besonderer Hinweis: ^M ist nicht das ^ und der Buchstabe M, der durch Drücken von Umschalt + 6 erzeugt wird, ist es ist ein Zeichen und ASCII ist 0x0D. Um es zu generieren, drücken Sie zuerst STRG+V und dann die Eingabetaste (oder STRG+M).
sed ‘s/^M//' filename > tmp_filename
mv -f tmp_filename filename

Wenn das SHELL-Programm außerdem meldet, dass der Befehl nicht gefunden wurde, Überprüfen Sie immer Ihren PATH. Gibt es jeden Befehl, der vom Programm verwendet wird (die Art, die keinen absoluten Pfad angibt)? Bei einem so kleinen Programm können Sie ihn Zeile für Zeile überprüfen.
Anhang: Es gibt kein Datei- oder Verzeichnisproblem, das durch das Schreiben eines weniger verursacht wird /


Als ich heute das einfache Shell-Skript durchgesehen habe, das ich zuvor geschrieben habe, habe ich ein Problem gefunden:

Wenn ./ beim Ausführen immer auffordert: (bash: ./hello.sh: bin/bash: bad interpreter: no such file or Directory), aber es funktioniert korrekt, wenn es mit sh ausgeführt wird.

Originalskript :

(Versuchen Sie, die Fehler auf einen Blick zu erkennen)

Nach mehreren Überprüfungen stellte ich fest, dass ich beim Schreiben etwas verloren hatte
   #!bin/bash
   echo "Hello Linux!"

Ich sollte die erste Zeile in #!/bin/bash ändern und eine weniger schreiben. /

Leider ist es eine sehr einfache Frage, ich habe noch nie einen solchen Fehler gefunden! In der Tat einfach zu verwenden, aber die einzige Schwierigkeit ist das Format. Die Anforderungen sind zu hoch!

Weitere Lösungen für das Problem „Es gibt keine solche Datei oder kein solches Verzeichnis“ bei der Ausführung in einem Shell-Skript finden Sie hier Auf der chinesischen PHP-Website finden Sie verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn