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

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

uname -m

如果是64位的话,应该在输出中说x86_64 ,如果是32位的,应该说是i686

运行uname -m 。 如果你的cygwin安装是64位的,输出将是x86_64 。 如果是32位,你将会看到i386i486i586i686

其他的答案解决了OP的问题,但是如果你像我一样使用Cygwin的两种风格,那么知道你使用的不仅仅是运行setup.exe。 如果我知道我的脚本正在Cygwin上运行,我更喜欢

 uname -m 

因为它只提供“x86_64”或“i686”作为输出。 我可以像这样在一个“if”块中使用它:

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

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

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

 uname -m 

我得到“x86_64”或“i686”,但谁知道这些string是否会改变? 这是“uname -a”的整个输出。 WOW64告诉你它是64位Windows上的32位Cygwin。 在32位,你没有select,对吧? ; – )

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

更新:(感谢TheDrake。)具有讽刺意味的是,从2015年2月左右开始,string中的WOW64已经变成了WOW ,所以尽pipe检查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