🎣

M1 Mac でシェルを fish + bobthefish + brew にした

2022/07/30に公開

シェルを標準のzshから便利なfishに変更

M1 Macを購入したのでシェルを標準のzshから便利なfishに変更しました。
(記事執筆時点でM2Macが出たばかりですが、私はボンビーなので型落ちでやっとM1 Macを手にしました...)
以前のMacでもfishを使っていたのでM1 Macでもやっていきます!

流れとしてはこんな感じ。


zshにHome Brew インストール

もうインストールしてる人は飛ばしてね

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”

インストールは成功したが、以下のように「パスが通ってないよ」警告が出た場合

**Warning**: /opt/homebrew/bin is not in your PATH.
  Instructions on how to configure your shell for Homebrew
  can be found in the ‘Next steps’ section below.

パスを通す
~/.zshrc内にパスを定義

$ vi ~/.zshrc

.zshrcに以下の一文追加。

export PATH=/opt/homebrew/bin:$PATH # <-追加

.zshrc再読み込み

$ source ~/.zshrc

確認する

$ brew -v
Homebrew 3.5.6
Homebrew/homebrew-core (git revision b58675e72a8; last commit 2022-07-29)

完了!

fishをインストール

$ brew install fish

fishのインストール場所を確認。 (M1チップとintelチップだとここが若干違うらしい。)

$ which fish
 /opt/homebrew/bin/fish

シェルが定義されているファイル~/etc/shells
先ほどの fishのパス ~/opt/homebrew/bin/fish を追加。

$ echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells

メモ
tee コマンドはファイルと標準出力の両方に出力。オプション-aは上書きでなく末尾に追加の意味。

確認

$ tail etc/shells
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/opt/homebrew/bin/fish

ターミナルの起動シェルをfishにする

まず、ログインシェル(ログインした際に起動するシェル)をfishに設定する。
ターミナルの環境設定のデフォルトで、ターミナルの起動シェルはログインシェルになっているので、特に理由がなければログインシェルの変更だけでいい。

$ chsh -s /opt/homebrew/bin/fish

そのままターミナルで新しいタブを開いてみるとfishが起動していることが確認できる。
(ターミナルの環境設定のデフォルトで、ターミナルの起動シェルはログインシェルになっているため)

Last login: Fri Jul 29 14:14:05 on ttys003
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
yamashita@MacBook-Air ~> 

bobthefishを入れて便利にする

メモ
これ以外にfish_config でカスタマイズする方法も楽しそう。(今回はしない)

fisherのインストール

fishのパッケージ管理コマンドfisherをインストールする。

$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher

bobthefishのインストール

見た目が「便利かっこいい可愛い」になる。

$ fisher install oh-my-fish/theme-bobthefish

ターミナルの環境設定でフォントを変更

そのままだと文字化けして読めないので、ターミナル側でフォントを変更する。
Space Mono for Powerlineに変更。

ついでにfishでHome Brewを使えるようにする

今のままだと.zshrcにしかHome Brewのパスが通っていないので、
fish側にもHome Brewのパスを通す必要がある。

$ vi ~/.config/fish/config.fish  

config.fishに以下の一文追加。

if status is-interactive
    # Commands to run in interactive sessions can go here
    
    # PATH
    set PATH /opt/homebrew/bin $PATH # <-追加
end

確認

$ brew -v 

以上!!

Discussion