Início > Processo de Desenvolvimento > Falha na Execução de Shell Script

Falha na Execução de Shell Script

Ao tentar executar um shell script em um terminal de um Red Hat, vi a mensagem abaixo:

/bin/bash^M: bad interpreter: No such file or directory

Antes de raciocinar e analisar a mensagem, mandei um “chmod +x”, mas não tinha nada a ver, pois não se tratava de um problema de permissão para execução. O script começa com a linha abaixo:

#!/bin/bash

Essa diretiva indica que estamos utilizando instruções compatíveis com o Bash. Nada estranho, mas depois de um pouco de pesquisa descobri que o problema estava na forma como desenvolvi o script.

Desenvolvi esse script no Windows, editei com o Sublime e testei com o Git Bash. No Windows funcionou normalmente, pois o Git emula um terminal com Bash, mas o Linux não conseguiu entender a primeira linha onde estava a diretiva do Bash, pois ele se importa com caracteres especiais – “/bin/bash^M” não é igual a “/bin/bash”. O que causava o problema era o caracter “^M” (carriage return).

O Linux utiliza o LF (line feed) como terminador de linha enquanto o Windows utiliza o par CR/LF (carriage return/line feed) e isso faz com que o Linux se perca ao interpretar o script.

Nesse fórum, sugere-se simplesmente apagar os caracteres CR presentes em cada linha:

sed -i -e 's/\r$//' seu_script.sh

Executei esse comando para “limpar” meu script e ele rodou corretamente no Linux.

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: