I am writing a bash script to deal with some installations in an automated way... I have the possibility of getting one such program in 32 or 64 bit binary... is it possible to detect the machine architecture from bash so I can select the correct binary?
This will be for Ubuntu machines.
If you're interested in the CPU itself, look at /proc/cpuinfo for details about the CPU(s) detected by the Linux kernel. which tells us that it's a 32-bit executable using the Intel 80386 instruction set (possibly with extensions). Note that it isn't quite as simple as 32-bit versus 64-bit architectures.
Therefore, the “/usr/lib/libc-2.33.so” file is a 64-bit library and the other one is a 32-bit library. Also, if we have a look at their “start address” fields, they have 64-bit and 32-bit wide addresses respectively.
$2 is the second command-line argument passed to the shell script or function. Also, know as Positional parameters.
MACHINE_TYPE=`uname -m` if [ ${MACHINE_TYPE} == 'x86_64' ]; then # 64-bit stuff here else # 32-bit stuff here fi
Does
uname -a
give you anything you can use? I don't have a 64-bit machine to test on.
Note from Mike Stone: This works, though specifically
uname -m
Will give "x86_64" for 64 bit, and something else for other 32 bit types (in my 32 bit VM, it's "i686").
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With