GNU/Linux >> Znalost Linux >  >> Linux

SH skript v $PATH není v Linuxu Alpine 3.11 nalezen

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.


Linux
  1. Odkazovat na soubor ve stejném adresáři skriptu nalezeného v $path?

  2. dos2unix:příkaz nenalezen

  3. chmod:příkaz nenalezen

  1. mkfs:příkaz nenalezen

  2. soubor:příkaz nenalezen

  3. tune2fs:příkaz nenalezen

  1. fsck:příkaz nenalezen

  2. ocas:příkaz nenalezen

  3. nohup:příkaz nenalezen