主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2022/04/22
Rosetta 2 上とかで古い Node.js 経由とかでシェルスクリプトを呼び出した場合、 Rosetta 2 を使用している状態が引き継がれます。
その状態で、 uname -a
とかすると、 Intel Mac と同様に x86_64
を返してしまいます。
それだと困るケースがあったので、ハードウェアのアーキテクチャを取得する方法。
といっても簡単で、 uname -v
すれば OK です。
$ uname -v
Darwin Kernel Version 21.2.0: Sun Nov 28 20:28:41 PST 2021; root:xnu-8019.61.5~1/RELEASE_ARM64_T6000
$ arch -x86_64 zsh
$ uname -v
Darwin Kernel Version 21.2.0: Sun Nov 28 20:28:41 PST 2021; root:xnu-8019.61.5~1/RELEASE_ARM64_T6000
上が M1 Mac で直接実行した場合、下が M1 Mac で Rosetta 2 経由で実行した場合。
共に ARM64
でビルドされていることが分かるので、そこで判定すれば OK。
ちなみに Intel Mac の場合は、 RELEASE_X86_64_XXXXXX
になっていたりします。