Nenhum erro de arquivo ou diretório ao tentar executar o script de inicialização no Debian

11

Muito novo no Debian (Raspbian), e estou lutando contra esse por alguns dias. Eu tenho um script de inicialização que quero executar na inicialização.

Eu executei os seguintes comandos, para tornar o script executável e incluí-lo com os parâmetros padrão na seqüência de inicialização.

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

Ao tentar testar o script, eu executo o seguinte:

sudo /etc/init.d/testsam start

Mas ao fazer isso, recebo um erro: não consigo executar o /etc/init.d/testsam: não existe esse arquivo ou diretório.

Eu minimizei o script para o básico, mas ainda não tenho uma pista do motivo real. Espero que alguém possa me indicar a solução certa? Este é o script atual.

#! /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

Obrigado por qualquer ajuda

    
por Sam Vanhoutte 02.05.2014 / 14:24

1 resposta

22

Você provavelmente tem um retorno de carro ( ^M ) no final da sua linha #! .

O formato da linha #! é muito rigoroso, e o retorno de carro não é permitido, a menos que seu interpretador seja chamado de /bin/bash^M

Nunca haverá retornos de carro em um arquivo criado com um editor unix adequado, a menos que você faça o possível para adicioná-los.

Ao editar um arquivo existente que já usa finais de linha CRLF, as retornos de carro podem estar ocultos de você. Por exemplo, o vim faz isso. Mas também diz [dos] na linha de status para avisá-lo que o arquivo está no formato DOS. Você pode então dizer :set fileformat=unix e salvar o arquivo para convertê-lo.

    
por 02.05.2014 / 14:36