Вы создали make.sh с помощью Блокнота? Если это так, каждая строка заканчивается CR (возврат каретки) и LF (перевод строки). Cygwin и его Unix-подобные программы не могут справиться с этим; Unix ожидает, что строки в текстовых файлах заканчиваются только LF (который Unix называет символом «новой строки»). Отредактируйте файл с помощью редактора Cygwin (например, vi или vim) и исправьте его. Если вы не можете этого сделать, попробуйте добавить « ; # »До конца каждой строки; это должно привести к тому, что bash будет рассматривать оскорбительные CR как комментарии.
Чтобы расширить вышесказанное: если моя теория верна, вторая строка make.sh выглядит так:
g++ -o ./test.out ./test.cpp CR
плюс LF который должен быть там (этот bash исключает из рассмотрения). Итак, g++ ищет файл с именем « ./test.cpp CR », которого, конечно же, не существует.
Так и сказано:
./test.cpp CR : No such file or directory
Но из-за возврата каретки это приводит к тому, что : No such file or directory перезаписывают ./test.cpp , поэтому : No such file or directory - это не все, что вы видите.