🐕

Apple SiliconのMacを渡されたあとのシェル(zsh)設定

2022/11/07に公開

頻度は低いが、毎回初期の開発環境設定で避けられないため忘備録として記録。

path設定

デフォルトだと下記のようなpathになっている。
(trコマンドで開業して見やすくしている。)

% echo $path | tr ' ' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

intel Macは特にこれで問題は発生しないが、Apple SiliconのMacだと後述のnodebrewなどをインストールしようとするとHomebrewのインストール先が異なりpathのエラーがでる。
Homebrewのインストール先となるopt/homebrew/にpathを通してあげる。

~/.zshrc
typeset -U path PATH
path=(
  /opt/homebrew/bin(N-/)
  /opt/homebrew/sbin(N-/)
  /usr/bin
  /usr/sbin
  /bin
  /sbin
  /usr/local/bin(N-/)
  /usr/local/sbin(N-/)
)

更新後は下記で更新を確認

# zshrcを更新
source ~/.zshrc

# 更新を確認
% echo $path | tr ' ' '\n'
/opt/homebrew/bin
/opt/homebrew/sbin
/usr/bin
/usr/sbin
/bin
/sbin
/usr/local/bin

zshの便利カスタマイズ

コマンドの入力を支援するカスタマイズを行う。
行うカスタマイズは一旦下記の項目とする。

  • 予測変換
  • 補完機能
  • 入力ミス対応
  • エイリアスを設定
  • cd実行時にlsを実行する
  • 重複したコマンドの履歴を残さない
/~/.zshrc
# 予測変換を有効に
autoload predict-on
predict-on

# 補完機能を有効に
autoload -Uz compinit
compinit

# 補完リストないで選択した部分を塗りつぶす
zstyle ':completion:*' menu select

# 入力ミスに対応
setopt correct

# ```cd```コマンドの省略。またセットで```ls```コマンドが実行されるようにする。
setopt auto_cd
function chpwd() { ls }

# 直前のコマンドと同じなら履歴に残さない
setopt HIST_IGNORE_DUPS

# alias設定
alias la='ls -a'
alias ll='ls -l'
alias lal='ls -al'
~~~以下aliasが続く~~~

上記設定後、忘れずに再度source ~/.zshrcを実行する。

homebrewによるツール導入

今回はnodeを使用したいためnodebrewをインストールする。

# nodebrewをインストール
% brew install nodebrew

# セットアップ
% nodebrew setup

# nodeコマンドを使用するためにpathを通す(セットアップ時に表示されたpathを指定)
% echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc

# インストールしたいバージョンを確認
% nodebrew ls-remote

# バージョンを指定してインストール(いずれかの方法で指定)
% nodebrew install (version) ## versionをピンポイントに指定
% nodebrew install stable ## 一番新しい安定版をインストール
% nodebrew install v16 stable ## 指定したメジャーバージョンの安定版をインストール

# インストールしたバージョン一覧を確認
% nodebrew ls

# 使用するバージョンを指定
% nodebrew use (version)

# 指定したnodeが使用できるか確認
% node -v

無事に指定したバージョンが表示されれば成功。
別バージョンを使いたい場合はnodebrew ls-remote以降を再度行えば良い。

参考記事

https://zenn.dev/sprout2000/articles/bd1fac2f3f83bc
https://original-game.com/terminal-zsh2/
https://qiita.com/mii-chan/items/f3291ae8bbbf788c8aa3

Discussion