quarta-feira, 20 de maio de 2009

Erro maluco ao rodar .sh

Caso ao rodar um .sh você obtenha uma resposta como esta:

/bin/bash^M: interpretador inválido: Arquivo ou diretório inexistente
ou
/bin/sh^M: interpretador inválido: Arquivo ou diretório inexistente

O problema é que o arquivo tem caracteres de quebra de linha do Wndows. O Windows usa 2 caracteres para quebra de linha; o Linux apenas 1. Assim, esse caracter fica sobrando. Para solucionar isto, basta chamar

dos2unix nome-do-arquivo.sh

Caso não tenha o dos2unix instalado, digite (funcionou no Ubuntu)

apt-get install tofrodos

2 comentários:

  1. Meu caro, você salvou vários scripts que bestamente ia perder! Inventei de fazer um backup utilizando o filezilla no windows e quando restaurei os arquivos...nenhum script funcionava!! Com essa dica, os computadores vão ser preparados a tempo de acontecer várias aulas que estavam agendadas na minha escola. Muito obrigado. Vou publicar no meu blog também, além de twittar seu blog. Abraço.

    ResponderExcluir
  2. Caso ao rodar um script do Python você obtenha uma resposta como esta:

    /usr/bin/^M: interpretador inválido: Arquivo ou diretório inexistente

    com o ^M

    O problema é que o arquivo tem caracteres de quebra de linha do Wndows.
    O Windows usa 2 caracteres para quebra de linha;
    o Linux apenas 1. Assim, esse caracter fica sobrando.
    Para solucionar isto, basta chamar refazer os arquivos ou retirar as
    quebras de linha no editor de texto Linux

    Ou ainda:
    dos2unix nome-do-arquivo.py

    Caso não tenha o dos2unix instalado, digite (Ubuntu)

    sudo apt-get install dos2unix

    *********************************************************
    Meu caso foi o mesmo, feito bckup passado pelo windows e em outra máquina com ubuntu os scripts python não rodavam, alterei acima as informações para o Python! Valeu.... mesmo depois de 3 anos o post continua ajudando!!!
    www.grafismorupestre.com
    *********************************************************

    ResponderExcluir