Sponsoring
Rosettaの設定に関わらず、TerminalでM1かどうかを判定する方法
MacのTerminalでM1かどうかの判定をする時に、以下のような処理をすることがあると思います。if [[ `uname -m` == 'arm64' ]]; then
echo "This is arm64"
else
echo "This is x86_64"
fi
uname -m
は、現在使用しているカーネルのバージョンなどについて調べるためのコマンド
で、iOS開発で使用する時は、主にM1かどうかの判定の時に使用します。しかしこのコマンドは、Terminalの
Rosetta
の設定を有効にしていると、x86_64
設定となってしまうので、Rosetta
を有効にしている時にM1かの判定に使用することはできません。
この場合は、以下のような分岐処理で判定することができます。
arch -arm64 uname -m
if [[ $? == 0 ]]; then
echo "arm64"
else
echo "x86_64"
fi
arch -arm64
、もしくはarch -x86_64
を実行するコマンドの前につけると、Rosetta
の設定に依存せず、それぞれのアーキテクチャでそのコマンドを実行することができます。しかしM1でないMacの場合、
arm64
アーキテクチャがないため、エラーになります。
そのため次のif文の分岐処理で、false
になり、Rosetta
の設定に関わらず、M1かどうかの判定をすることができます。もしこれよりシンプルな方法があれば、教えていただけると嬉しいです!
+1
Sponsoring