Váš interaktivní shell je dash
(maskované jako sh
). dash
shell říká
sh: /usr/local/bin/wait-for: not found
když se pokusí spustit skript, který má chybný #!
-řádek ukazující na interpret, který nelze najít. Stává se být přesně stejná chyba, jakou byste dostali, když nelze najít zadaný příkaz, takže je snadné si myslet, že jde o $PATH
problém (v tomto případě to není). Jiné shelly mají více informativních chybových zpráv (bash
a zsh
říká "špatný interpret:Žádný takový soubor nebo adresář" a také vám řekne, jaký interpret se pokusil spustit).
Protože soubor je textový soubor DOS, #!
-line instruuje shell, aby spustil skript s /bin/sh\r
, kde \r
je běžná reprezentace znaku pro návrat vozíku, který je součástí ukončení řádku v textových souborech DOS. V systému Unix je návrat vozíku "obyčejný znak" a vůbec není součástí zakončení řádku, což znamená, že se pokouší spustit /bin/sh\r
spustit váš skript, a pak selže, protože tento soubor neexistuje. Je to tedy tlumočník to není "nenalezeno", nikoli samotný skript.
Spuštění skriptu s explicitním interpret obchází #!
-line, vždy, což je důvod, proč se vám při tom nezobrazuje chyba. Každý řádek ve skriptu by však stále měl na konci návrat vozíku, což může za určitých podmínek způsobit selhání skriptu.
Jednoduše znovu uložte soubor jako textový soubor Unix nebo jej převeďte pomocí dos2unix
, vyřeší váš problém.