GNU/Linux >> Linux Esercitazione >  >> Linux

Lo script SH in $PATH non è stato trovato su Linux Alpine 3.11

La tua shell interattiva è dash (mascherato da sh ). Il dash shell dice

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

quando tenta di eseguire uno script con #! difettoso -line che punta a un interprete che non può essere trovato. Succede essere esattamente lo stesso errore che otterresti quando il comando che digiti non può essere trovato, quindi è facile pensare che sia un $PATH problema (non è in questo caso). Altre shell hanno messaggi di errore più informativi (bash e zsh dice "bad interpreter:No such file or directory" e ti dice anche quale interprete ha cercato di eseguire).

Poiché il file è un file di testo DOS, il file #! -line ordina alla shell di eseguire lo script con /bin/sh\r , dove \r è una rappresentazione comune di un carattere di ritorno a capo, che fa parte della terminazione di riga nei file di testo DOS. Su un sistema Unix, un ritorno a capo è un "carattere ordinario" e non fa parte della terminazione di riga, il che significa che tenta di iniziare /bin/sh\r per eseguire lo script e quindi fallisce poiché quel file non esiste. È quindi l'interprete cioè "non trovato", non lo script stesso.

Eseguire lo script con un esplicito l'interprete ignora il #! -line, sempre, motivo per cui non ricevi l'errore quando lo fai. Tuttavia, ogni riga dello script avrebbe ancora i ritorni a capo alla fine, il che potrebbe causare il malfunzionamento dello script in alcune condizioni.

Semplicemente risalvando il file come file di testo Unix o convertendolo con dos2unix , risolverebbe il tuo problema.


Linux
  1. mkfs:comando non trovato

  2. file:comando non trovato

  3. tune2fs:comando non trovato

  4. fsck:comando non trovato

  5. coda:comando non trovato

dos2unix:comando non trovato

nano:comando non trovato

chmod:comando non trovato

ordina:comando non trovato

sed:comando non trovato

comando realpath non trovato