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.cpp
CR
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.cpp
CR: 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ê.