Как узнать, установлена ​​ли установка Cygwin 32 или 64 бит?

Как узнать, установлена ​​ли моя установка cygwin на 32 или 64 бит? Я не помню, какой setup.exe для загрузки. И я бы не хотел испортить мою установку cygwin.

Ответ 1

uname -m

И он должен сказать x86_64 в выводе, если он 64-разрядный, или i686, если 32-разрядный.

Ответ 2

Запустите uname -m. Если ваша установка cygwin - 64-разрядная, то выход будет x86_64. Если он 32-бит, вы увидите i386, i486, i586 или i686.

Ответ 3

Другие ответы касаются вопроса OP, но если вы похожи на меня и используете оба варианта Cygwin, полезно узнать, какой из них вы используете, а не просто запускать setup.exe. Если я знаю, что мой script работает на Cygwin, я предпочитаю

uname -m

потому что он дает мне только "x86_64" или "i686" в качестве вывода. Я могу использовать это в блоке "if" следующим образом:

if [ $(uname -m) == "x86_64" ]; then do something; fi

Конечно, вы также можете использовать "uname -a" с "grep" в инструкции if. Это вопрос личных предпочтений.

Ответ 4

NateT дает правильную команду "распечатать имя аппаратного оборудования" в соответствии с "uname --help":

uname -m

Я получаю "x86_64" или "i686", но кто знает, изменится ли эти строки? Здесь весь вывод "uname -a". WOW64 сообщает вам об этом 32-разрядный Cygwin на 64-битной Windows. На 32-битном у вас нет выбора, не так ли?; -)

$ uname -a
CYGWIN_NT-6.1-WOW64 Pegasus 1.7.32(0.274/5/3) 2014-08-13 23:03 i686 Cygwin

Обновление: (спасибо theDrake.) По иронии судьбы, начиная с февраля 2015 года WOW64 в строке изменился на WOW, поэтому, хотя проверка WOW, вероятно, сейчас безопасна, похоже, что "имя аппаратного оборудования" действительно может быть более безопасным, чем "имя ядра".

Cygwin действительно воспринимает обратную совместимость серьезно в соответствии с этим потоком, но также замечает, что в MSYS2 вам все равно придется полагаться на "имя аппаратного оборудования", а не на "имя ядра":

$ uname -a
MSYS_NT-6.1 Pegasus 2.5.0(0.295/5/3) 2016-03-15 11:29 x86_64 Msys