M1 Macでターミナルをarm64とx86_64で別々にするといいよ!知らんけど。


ターミナルの切替が面倒なんです。

M1 Mac mini買いました
すごく良いのですが、開発でターミナルを使う時に少し面倒なことがありました。
ターミナルは基本的にApple Silicon(以下arm64)で起動します。ただ全てのアプリやライブラリがarm64に対応しているわけではないので、Intel(以下x86_64)で使いたい時もあります。

この時、ターミナル.appの「情報を見る」->「Rosettaを使用して開く」にチェックしてから起動するとx86_64で起動します。

面倒くさくないですか
偉大な先達は、シェルで切り替える等々を実践されていますが、それもちょっとハードルが高く・・。

で、ターミナルをarm64とx86_64で分ければ良いのではと思い、試した結果上手くいったのでご報告します。

ただ邪道な感じはしますので、何か不具合があるかもしれません。
その点、ご留意ください・・。

でも今のところ私は快適に使えています

方法

  1. 「Application」ディレクトリに移動する。

  2. 「ユーティリティ」ディレクトリに移動する。

  3. 「ターミナル.app」をコンテキストメニュー(またはcommand + D)で複製する。

  4. 複製したターミナル.appの名称を変更(ここでは「ターミナル(Intel).app」に変更)。

  5. 今回は、念の為別のフォルダを作成し、そこに複製した「ターミナル(Intel).app」を移動。

  6. 複製した「ターミナル(Intel).app」の「情報を見る」からRosettaを使用して開く」を有効にする。

7. あとは、それぞれをDockに登録しておくと任意のアーキテクトで起動できます。

えぇ、力技です
分かりにくいですが、左のウィンドウが「arm64」で右のウィンドウが「x86_64」です。並べて起動しています。

ちなみに起動した時どちらのアーキテクトか分かりやすいようにzshでプロンプトを編集してアーキテクト名を赤い文字で出力しています。

 .zshrcに以下を設定しています。

.zshrc

autoload -Uz colors
colors

if [[ "$(uname -m)" == "arm64" ]]; then
   PROMPT='%m %F{red}[ arm64 ]%f %# '
 else
   PROMPT='%m %F{red}[ x86_64 ]%f %# '
 fi

uname -mの結果を出力しているだけです。

ひとつ注意点として、ターミナル.appの設定ファイルは共通です。

複製をアンインストールする時などにツールを使用した場合、元の設定まで初期化される恐れがあります。

いずれは、こんなことしなくても、全てarm64に対応すると思いますが、それまでの凌ぎに。
それでは、良いM1ライフを

ありがとうございました。

追記
Sepi110902さんから、ご指摘いただきまして、全くそのとおりです
記事を投稿した時に無精してしまって、すいません。
elseで分けたのは、x86の時に黄色で出力させる運用をしています。
遅くなりましたが、ここで追記訂正いたします。

.zshrc

autoload -Uz colors
colors

if [[ "$(uname -m)" == "arm64" ]]; then
   PROMPT='%m %F{red}[ arm64 ]%f %# '
 else
   PROMPT='%m %F{yellow}[ x86_64 ]%f %# '
 fi

コメントありがとうございました。