GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Das SH-Skript in $PATH wird unter Linux Alpine 3.11 nicht gefunden

Ihre interaktive Shell ist dash (verkleidet als sh ). Die dash Shell sagt

sh: /usr/local/bin/wait-for: not found

wenn es versucht, ein Skript auszuführen, das einen fehlerhaften #! hat -Zeile, die auf einen Interpreter zeigt, der nicht gefunden werden kann. Es passiert genau derselbe Fehler sein, den Sie erhalten würden, wenn der von Ihnen eingegebene Befehl nicht gefunden werden kann, daher ist es leicht zu glauben, dass es sich um einen $PATH handelt Problem (in diesem Fall nicht). Andere Shells haben informativere Fehlermeldungen (bash und zsh sagt "Bad Interpreter:No such file or directory" und teilt Ihnen auch mit, welchen Interpreter versucht wurde auszuführen).

Da es sich bei der Datei um eine DOS-Textdatei handelt, ist der #! -line weist die Shell an, das Skript mit /bin/sh\r auszuführen , wobei \r ist eine übliche Darstellung eines Wagenrücklaufzeichens, das Teil des Zeilenabschlusses in DOS-Textdateien ist. Auf einem Unix-System ist ein Wagenrücklauf ein "gewöhnliches Zeichen" und überhaupt kein Teil des Zeilenabschlusses, was bedeutet, dass versucht wird, /bin/sh\r zu starten um Ihr Skript auszuführen, und schlägt dann fehl, da diese Datei nicht existiert. Es ist also der Interpreter das ist "nicht gefunden", nicht das Skript selbst.

Ausführen des Skripts mit einem expliziten Interpreter umgeht den #! -line, immer, weshalb Sie den Fehler nicht erhalten, wenn Sie das tun. Jede Zeile im Skript würde jedoch immer noch die Wagenrückläufe am Ende haben, was unter bestimmten Bedingungen zu Fehlfunktionen des Skripts führen kann.

Speichern Sie die Datei einfach erneut als Unix-Textdatei oder konvertieren Sie sie mit dos2unix , würde Ihr Problem lösen.


Linux
  1. dos2unix:Befehl nicht gefunden

  2. chmod:Befehl nicht gefunden

  3. mkfs:Befehl nicht gefunden

  4. Datei:Befehl nicht gefunden

  5. tune2fs:Befehl nicht gefunden

nano:Befehl nicht gefunden

Sortieren:Befehl nicht gefunden

sed:Befehl nicht gefunden

Bash-Skript:schlechter Interpreter

realpath-Befehl nicht gefunden

Shebang oder nicht Shebang