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.