[小ネタ] bash,VimでApple Silicon搭載Macを判定する


bash

#!/bin/bash

if [ "$(uname)" == 'Darwin' ]  && [ "$(uname -m)" == 'x86_64' ]; then
  echo 'x86_64 Mac'
elif [ "$(uname)" == 'Darwin' ]  && [ "$(uname -m)" == 'arm64' ]; then
  echo 'arm64 Mac'
fi

Vim

unameがRosetta2を経由しないようにarch -arm64eオプションをつけている
Rosetta2を経由すると、Apple Silicon搭載Macでもx86_64に判定される

let g:os = substitute(system('arch -arm64e uname'), '\n', '', '')
let g:arch = substitute(system('arch -arm64e uname -m'), '\n', '', '')

if g:os ==# 'Darwin' && g:arch ==# 'x86_64'
  let g:coc_node_path = expand('~/.anyenv/envs/nodenv/shims/node')
elseif g:os ==# 'Darwin' && g:arch ==# 'arm64'
  let g:coc_node_path = expand('/usr/local/bin/node')
endif

参考

Apple Silicon搭載のMacではIntel-Onlyのターミナルエミュレータを利用するとCLIツールはRosetta経由で起動するので注意を。