2014-03-27 215 views
39

如何判斷我的cygwin安裝是32位還是64位? 我不記得要下載哪個setup.exe。我不想搞亂我的cygwin安裝。如何判斷我的cygwin安裝是32位還是64位?

+1

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306)。 – jww

回答

43

uname -m

而且應該說x86_64輸出,如果是64位或i686如果32位。

21

運行uname -m。如果你的cygwin安裝是64位的,輸出將是x86_64。如果是32位,您將看到i386i486i586i686

7

其他答案解決了OP的問題,但是如果您像我一樣使用Cygwin的兩種口味,那麼知道您使用的不僅僅是運行setup.exe的用途非常有用。如果我知道我的腳本在Cygwin上運行,我寧願

uname -m 

,因爲它給我的只有「x86_64的」或「i686的」作爲輸出。我可以使用,在這樣的一個「如果」塊:

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

當然,你也可以在if語句中使用「UNAME -A」和「grep」。這是個人喜好的問題。

2

NateT給出正確的命令,「打印設備硬件名稱」,按照「UNAME --help」:

uname -m 

我得到「x86_64的」或「i686的」,但誰知道是否這些字符串將更改?這是「uname -a」的全部輸出。 WOW64告訴你它是64位Windows上的32位Cygwin。在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年2月the WOW64 in the string has changed to 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 
+1

使用我目前的設置,在64位Windows 10環境中運行32位Cygwin,運行'uname -a'顯示沒有「64」的輸出(輸出以'i686 Cygwin'結尾,就像'CYGWIN_NT-10.0-WOW'一樣,在你的例子中)。所以,也許你的解釋並不完全正確?我想知道這種差異是從哪裏來的。 – theDrake

+1

哈,我沒有想到WOW64字符串會改變,但這就是他們爲什麼要這麼做的原因:https://www.cygwin.com/ml/cygwin/2015-02/msg00938.html –

+0

感謝您的發現!可惜他們不得不做出這樣一個可能令人困惑的變化。 – theDrake

相關問題