Запуск файла .exe в cygwin.

471
Megabrukman

Я абсолютно новичок в CYGWIN и Bash, так что, я думаю, что где-то есть ответ в документации, но мне не удалось его найти.

У меня есть два файла, сосуществующих в каталоге: file и file.exe . Если я вызываю файл (используя терминал CYGWIN), он выдает ошибку «невозможно выполнить двоичный файл: ошибка формата exec» (потому что он обращается к файлу ), но если я вызываю file.exe, он работает хорошо. В руководстве я обнаружил, что «сценарий оболочки имеет приоритет и выбирается для выполнения файла », но, похоже, он неверен в моей ситуации. Итак, что я должен сделать, чтобы исключить файл.exe вызывающего файла в терминале? Заранее спасибо.

ps ./file также не работает; ./file.exe хорошо работает

0

2 ответа на вопрос

0
harrymc

Cygwin следует правилам Linux, где нет никаких расширений по умолчанию для исполняемых файлов. Такие файлы определяются как исполняемые путем изменения их атрибутов с помощью chmodкоманды, а не их расширения.

Не следует называть файлы с одинаковыми именами, так как «file» не вызывает «file.exe».

Спасибо за ваш ответ! Да, я пытался изменить его атрибут с помощью `chmod + x file.exe`, но ничего не изменилось. знак равно Megabrukman 5 лет назад 0
Проблема заключается в наличии `файла`. Установка атрибутов "file.exe" не поможет. Cygwin не запустит «file.exe», если вы не запустите «file.exe». Он выполнит «файл», если вы введете «файл». harrymc 5 лет назад 0
0
matzeri

Переименуйте в fileчто-то другое. Этого должно быть достаточно

mv file file2 

.exeТак называемый магический обработчик внутри Cygwin будет рассматривать file.exeи в fileкачестве синонима.
Также обратите внимание, что fileэто также команда базового пакета

$ which file /usr/bin/file $ cygcheck -f $(which file) file-5.32-1 

и это не очень хорошая идея иметь дублированное имя программы