Esse ^M
é um retorno de carro . Windows representa quebras de linha pelo retorno de carro de seqüência de dois caracteres, alimentação de linha (CRLF ou ^M^J
). Linux e outros unices usam o caractere único LF. Este CR é tratado como um caractere comum, então o kernel procura por um interpretador chamado /bin/sh␍
em vez de /bin/sh
. Quando você invocou sh
explicitamente, ele também tratou o CR como um caractere comum, parte dos nomes dos comandos.
Este é um sinal de que esses arquivos foram copiados de uma máquina Windows onde eram arquivos de texto. Você não pode copiar diretamente arquivos de texto entre máquinas Windows e Linux, você precisa converter os finais de linha. É provável que você tenha extraído o arquivo no Windows e copiado os arquivos para o Linux. Em vez de fazer isso, extraia o arquivo no Linux.
No caso do Boost, a partir da versão 1.49.0 , o arquivo é distribuído em quatro formatos:
- gzip e bzip2, com finais de linha unix;
- zip e 7z, com finais de linha do Windows.
A maneira mais fácil de compilar o Boost no Linux é usar o arquivo bzip2. Se você precisa trabalhar com o 7z, pode usar comandos como dos2unix
ou sed -i -e 's/\r$//'
em todos os arquivos de texto para converter os finais de linha.