В приведенном выше ответе было предложено решение:
Отредактируйте / etc / fstab и добавьте эту строку в конец файла:
none / cygdrive cygdrive binary, noacl,posix = 0, пользователь 0 0
И в этом ответе был этот комментарий:
Когда я пытаюсь это сделать, все мои файлы -rw-r - r- независимо от того, что chmod () я делаю.Я не могу пометить файлы как исполняемые;он просто возвращается к 0644. (umask == 0022)
У меня была такая же проблема, но она проявлялась в невозможности выполнения пакетных файлов DOS (* .bat) при запуске Cygwin ksh или mksh.Я наткнулся на этот сайт: http://pipeline.lbl.gov/code/3rd_party/licenses.win/cygwin-doc-1.4/html/faq/, который содержит этот полезный совет:
Обратите внимание, что вы можете использовать mount -x, чтобы заставить Cygwin рассматривать все файлы в точке монтирования как исполняемые.Это может быть использовано как для отдельных файлов, так и для каталогов.Тогда Cygwin не будет читать файлы, чтобы определить, являются ли они исполняемыми.
Итак, сделайте перекрестную ссылку на эту страницу - https://cygwin.com/cygwin-ug-net/using.html#mount-table - с ее советом:
cygexec - Обрабатывать все файлы ниже точки монтирования как исполняемые файлы cygwin.
Я добавил cygexec в четвертое поле моего fstab.Это сделал это.Мой .bat теперь исполняемый внутри ksh / mksh, что необходимо, так как я выполняю задание Jenkins, которое вызывает стек оболочки Korn глубиной 3 файла, над которым я не могу изменять.Мне просто нужно было запустить .bat!
Обновление: приведенное выше решение не совсем то, что мне было нужно, при дальнейшем тестировании.Это привело к тому, что некоторые исполняемые файлы, такие как javac и cl, вели себя странно (утилиты распечатывали их использование и выходили).Я думаю, что вместо «cygexec» мне нужно было просто «exec».Как отмечает та же страница:
exec - Обрабатывать все файлы ниже точки монтирования как исполняемые.