Nessun errore di file o directory durante il tentativo di eseguire script di avvio in Debian


11

Nuovo di Debian (Raspbian), e sto lottando su questo per alcuni giorni. Ho uno script di avvio che voglio eseguire all'avvio.

Ho eseguito i seguenti comandi, per rendere eseguibile lo script e per aggiungerlo con i parametri predefiniti alla sequenza di avvio.

sudo chmod 755 /etc/init.d/testsam
sudo update-rc.d testsam defaults

Quando provo a testare lo script, eseguo quanto segue:

sudo /etc/init.d/testsam start

Ma quando lo faccio, ricevo un errore: impossibile eseguire /etc/init.d/testsam: nessun file o directory.

Ho minimizzato la sceneggiatura alla base, ma non ho ancora idea della ragione reale. Spero che qualcuno possa indicarmi la soluzione giusta? Questo è lo script attualmente.

#! /bin/bash

# /etc/init.d/testsam

case "$1" in
 start)
        #echo "starting script"
        ;;
 stop)
        #echo "stopping script"
        ;;
 *)
        #echo "Usage: /etc/init.d/testsam {start|stop}"
        exit 1
         ;;
esac

exit 0

Grazie per qualsiasi aiuto

Risposte:


22

Probabilmente hai un ritorno ^Ma capo ( ) alla fine della #!riga.

Il formato della #!linea è molto rigoroso e il ritorno a capo non è consentito lì, a meno che il tuo interprete non sia effettivamente chiamato/bin/bash^M

Non ci saranno mai ritorni a capo in un file creato con un editor unix appropriato, a meno che non si faccia il possibile per aggiungerli.

Quando si modifica un file esistente che utilizza già i finali di riga CRLF, i ritorni a capo potrebbero essere nascosti. Ad esempio, vim lo fa. Ma [dos]nella riga di stato indica anche che il file è in formato DOS. È quindi possibile dire :set fileformat=unixe salvare il file per convertirlo.


5
Per verificare se questo è effettivamente il problema, fare cat -v /etc/inti.d/testsam. Se hai un ritorno a capo errato, verrà visualizzato come ^M.
— Jenny D,

grazie per l'aiuto veloce! avevo ricevuto il file tramite il comando wget ed era effettivamente un file basato su Windows.
— Sam Vanhoutte,

Su alcuni server potrei usare dos2unixma cosa fai quando l'host non consente a quel comando di cancellare tutte le istanze di ^M?
— user33777

1
Un altro modo per risolvere il problema:sed -i -e 's/\r//g' /path/file
— Al Belsky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.