Как узнать, установлена ли моя установка cygwin на 32 или 64 бит? Я не помню, какой setup.exe для загрузки. И я бы не хотел испортить мою установку cygwin.
Как узнать, установлена ли установка Cygwin 32 или 64 бит?
Ответ 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