How to determine if it is M1 in Terminal regardless of Rosetta settings
When judging whether it is M1 or not in Terminal of Mac, I think that the following processing may be performed.
if [[ `uname -m` == 'arm64' ]]; then
echo "This is arm64"
else
echo "This is x86_64"
fi
If you refer to this, uname -m is a command to check the kernel version you are currently using, and when you use it in iOS development, it is mainly used to judge whether it is M1 or not.
However, this command will be x86_64 if the Terminal Rosetta setting is enabled, so it cannot be used to determine if it is an M1 when Rosetta is enabled. In this case, it can be determined by the following branch processing.
arch -arm64 uname -m
if [[ $? == 0 ]]; then
echo "arm64"
else
echo "x86_64"
fi
If you put it before the command to execute arch -arm64 or arch -x86_64, you can execute the command in each architecture regardless of Rosetta‘s settings.
But for non-M1 Macs, we get an error because I don’t have the arm64 architecture.
Therefore, it becomes false in the branch processing of the next if statement, and it is possible to judge whether it is M1 regardless of the Rosetta setting.
If there is a simpler way than this, I would appreciate it if you could tell me!