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

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

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

2 ответа2

1

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

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

0

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

mv file file2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .