Recentemente, mudei de usar o Ubuntu em inicialização dupla para usá-lo no WSL. Eu tinha um script bash que funcionava perfeitamente bem no Ubuntu, que então clonei de um repositório do GitHub para o Windows. Quando tento executar o script no WSL, recebo o seguinte erro:
batch.sh: line 2: $'\r': command not found
Como faço para clonar o repositório usando a instalação do windows do git de forma que o tratamento de caracteres de nova linha seja compatível com o WSL?
Edit: Esta questão foi significativamente reformulada para descrever com mais precisão o problema.
Não é culpa da WSL.
Quando você está instalando o git no Windows, o instalador pergunta qual tratamento de nova linha você gostaria que ele usasse. Você deve ter selecionado "Check-out como CRLF, confirmar como LF". Assim, o git insere
\r
caracteres extras em seus arquivos de texto que não estavam presentes no Linux (se estivessem presentes, você receberia os mesmos erros).Você pode alterar essas configurações em
.gitconfig
um arquivo em seu diretório pessoal (C:\Users\YourUsername
). Chama-secore.autocrlf
. Os valores possíveis são:true
(sua configuração atual)input
(check-out como está, confirme LF)false
(check-out e confirmação como está).Consegui resolver meu problema específico. O script bash foi copiado para o Windows de um repositório clonado do GitHub, no entanto, eu clonei o repositório do cmd. O problema foi resolvido quando clonei o repositório do WSL. Presumivelmente, a causa do problema tem a ver com a diferença em como os 2 sistemas operacionais lidam/interpretam os
\n
caracteres\r
.Definitivamente, há uma explicação mais técnica que pode ser dada do que a minha.