Почему некоторые файлы Cygwin не исполняются? - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь выполнить команды Cygwin в Windows из приложения Java.В bin cygwin я заметил, что некоторые файлы имеют тип приложения (.exe), в то время как другие (например, zcat и zless) не имеют расширения и являются просто типом файла.

Я добавил корзину в PATH Windows и, похоже,чтобы иметь возможность выполнять только файлы .exe из cmd.Приведенный ниже код работает.

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "ls");
Process p = pb.start();

Я хочу использовать такие вещи, как zcat и zless, но они не являются исполняемыми, и cmd жалуется, что zcat не распознается как внутренняя или внешняя команда, работающая программа или пакетfile.

Если я вручную изменяю файл на .exe, я получаю всплывающее сообщение о невозможности запуска или запуска zcat из-за несовместимости с 64-разрядными версиями Windows.Я установил 64-битную версию cygwin (setup-x86_64).Почему не все исполняемые файлы Cygwin's bin?

1 Ответ

0 голосов
/ 25 февраля 2019

Большинство программ cygwin НЕ являются двоичными, а являются скриптовыми.Команда file может дать вам описание типа файла:

$ file zcat
zcat: POSIX shell script, ASCII text executable

при

$ file cat
cat: PE32+ executable (console) x86-64, for MS Windows

чтении первых 5 строк zcat

$ head -n 5 zcat
#!/bin/sh
# Uncompress files to standard output.

# Copyright (C) 2007, 2010-2016 Free Software Foundation, Inc.

мы видим в первой строке #!, который говорит, что это скрипт, который должен выполняться интерпретатором /bin/sh.

В другом случае мы можем иметь

$ head -n5 2to3
#!/usr/bin/python2.7.exe
import sys
from lib2to3.main import main

sys.exit(main("lib2to3.fixes"))

, поэтому 2to3такое скрипт на python 2.7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...