Você criou make.sh com o Bloco de Notas? Nesse caso, cada linha termina com CR (retorno de carro) e LF (avanço de linha). O Cygwin e seus programas semelhantes ao Unix não podem lidar com isso; O Unix espera que as linhas em arquivos de texto terminem com apenas LF (que o Unix chama de caractere de "nova linha"). Edite seu arquivo com um editor do Cygwin (por exemplo, vi ou vim ) e corrija-o. Se você não puder fazer isso, tente adicionar " ; # " ao final de cada linha; Isso deve fazer com que bash trate o CR s ofensivo como comentários.
Para expandir o acima: se minha teoria estiver correta, a segunda linha de make.sh se parece com:
g++ -o ./test.out ./test.cppCR
mais o LF que deveria estar lá (que bash exclui da consideração). Portanto, g++ está procurando por um arquivo cujo nome é " ./test.cpp CR ", o que, obviamente, não existe.
Então diz:
./test.cppCR: No such file or directory
Mas, devido ao que é um retorno de carro, isso faz com que : No such file or directory sobrescreva o ./test.cpp , então : No such file or directory é tudo que você vê.