70 votes

Est-il possible de détecter 32 bits contre 64 bits dans un script bash?

J'écris un script bash pour gérer certaines installations de manière automatisée ... J'ai la possibilité d'obtenir un tel programme en binaire 32 ou 64 bits ... est-il possible de détecter l'architecture de la machine à partir de bash afin de pouvoir sélectionner le bon binaire?

Ce sera pour les machines Ubuntu.

77voto

bmdhacks Points 9074
MACHINE_TYPE=`uname -m`
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
  # 64-bit stuff here
else
  # 32-bit stuff here
fi

51voto

Victor Zamanian Points 1851

getconf LONG_BIT semble également faire l'affaire, ce qui facilite d'autant plus la vérification, car elle renvoie simplement l'entier au lieu d'une expression compliquée.

 if [ `getconf LONG_BIT` = "64" ]
then
    echo "I'm 64-bit"
else
    echo "I'm 32-bit"
fi
 

49voto

shoover Points 1631

Est-ce que

 uname -a
 

vous donner tout ce que vous pouvez utiliser? Je n'ai pas de machine 64 bits sur laquelle tester.


Note de Mike Stone: Cela fonctionne, bien que spécifiquement

 uname -m
 

Donnera "x86_64" pour 64 bits et quelque chose d'autre pour d'autres types 32 bits (dans ma machine virtuelle 32 bits, c'est "i686").

11voto

lolesque Points 1153

Attention, dans un env. 32 bits chroot ed, uname répond toujours comme le système hôte 64 bits.

getconf LONG_BIT fonctionne bien.

file /bin/cp ou n'importe quel exécutable ou bibliothèque bien connu devrait faire l'affaire si vous n'avez pas getconf (mais vous pouvez stocker des programmes que vous ne pouvez pas utiliser et qu'il n'y en a peut-être pas à cet endroit).

7voto

Kevin Little Points 5406
 slot8(msd):/opt # uname -a
Linux slot8a 2.6.21_mvlcge500-electra #1 SMP PREEMPT Wed Jun 18 16:29:33 \
EDT 2008 ppc64 GNU/Linux
 


Rappelez-vous, il existe d'autres architectures de CPU que Intel / AMD ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X