如何判断我的cygwin安装是32位还是64位?

如何判断我的cygwin安装是32位还是64位?,cygwin,Cygwin,如何判断我的cygwin安装是32位还是64位? 我不记得要下载哪个setup.exe。我不想把我的cygwin安装搞砸。uname-m 如果是64位,则输出中应显示x86_64,如果是32位,则输出中应显示i686。运行uname-m。如果您的cygwin安装为64位,则输出将为x86\u 64。如果它是32位的,您将看到i386,i486,i586,或者i686,其他答案解决了OP的问题,但是如果您像我一样使用两种风格的Cygwin,那么知道您使用哪一种版本不仅仅是运行setup.exe是很

如何判断我的cygwin安装是32位还是64位? 我不记得要下载哪个setup.exe。我不想把我的cygwin安装搞砸。

uname-m


如果是64位,则输出中应显示
x86_64
,如果是32位,则输出中应显示
i686

运行
uname-m
。如果您的cygwin安装为64位,则输出将为
x86\u 64
。如果它是32位的,您将看到
i386
i486
i586
,或者
i686
,其他答案解决了OP的问题,但是如果您像我一样使用两种风格的Cygwin,那么知道您使用哪一种版本不仅仅是运行setup.exe是很有用的。如果我知道我的脚本在Cygwin上运行,我更喜欢

uname -m
因为它只给我“x86_64”或“i686”作为输出。我可以在“如果”块中使用它,如下所示:

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

当然,您也可以在if语句中使用“uname-a”和“grep”。这是个人喜好的问题。

Naet根据“uname--help”给出正确的命令“打印机器硬件名称”:

我得到了“x86_64”或“i686”,但谁知道这些字符串是否会改变?这是“uname-a”的全部输出。WOW64告诉您它是64位Windows上的32位Cygwin。在32位上,您别无选择,对吗?;-)

更新:(感谢撤销)。讽刺的是,自2015年2月左右以来,尽管检查WOW现在可能是安全的,但“机器硬件名称”可能确实比“内核名称”更安全

根据该线程,Cygwin似乎确实非常重视向后兼容性,但也要注意,在MSYS2下,您无论如何都需要依赖“机器硬件名称”,而不是“内核名称”:


在我当前的设置中,在64位Windows 10环境中运行
uname-a
的32位Cygwin将显示
Cygwin\u NT-10.0-WOW
而不显示“64”(输出以
i686 Cygwin
结束,就像在您的示例中一样)。那么,也许你的解释不太正确?我想知道这种差异是从哪里来的。哈,我没想到WOW64字符串会改变,但下面是他们为什么这么做的原因:谢谢你找到了!遗憾的是,他们不得不做出这样一个可能令人困惑的更改。是的,它显示了“内核”的名称是相当随意的。再一次,我注意到上面你列出了相当多的“机器硬件名称”值,我怀疑有一天ARM(32,64)等会被添加到列表中。Stack Overflow是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另见。
uname -m
$ uname -a
CYGWIN_NT-6.1-WOW64 Pegasus 1.7.32(0.274/5/3) 2014-08-13 23:03 i686 Cygwin
$ uname -a
MSYS_NT-6.1 Pegasus 2.5.0(0.295/5/3) 2016-03-15 11:29 x86_64 Msys