何度かハマったのですが、ググるのに結構時間かかったので備忘として残します。
最初にまとめ
- M1以降のMacではnpmではなくHomebrewからPureをインストールしましょう
- Zshプロファイルに
fpath
で検索箇所を追記しましょう
Pureとは?
Zshのプロンプト表示をシンプルにしてくれるOSSです。
こんな風になります。
導入手順
- Homebrew、Pureのインストール
# Homebrewのインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Pureのインストール
$ brew install pure
- Zsh設定の変更
nano ~/.zshrc
- nanoエディターで設定ファイル内に以下を追記
- 追記完了したら
Ctrl+x
で終了 →y
で保存 →Enter
でファイル名確定、して抜ける
# Pureプロンプト
fpath+=("$(brew --prefix)/share/zsh/site-functions")
autoload -U promptinit; promptinit
prompt pure
- Zsh設定の再読み込み
source ~/.zshrc
私がハマったポイント
もし以下が表示されてしまったら、pureのパスが認識されていません(=パスが通っていない)
Usage: prompt <options>
Options:
-c Show currently selected theme and parameters
-l List currently available prompt themes
-p [<themes>] Preview given themes (defaults to all except current theme)
-h [<theme>] Display help (for given theme)
-s <theme> Set and save theme
<theme> Switch to new theme immediately (changes not saved)
以下を確認しましょう。
- (npmではなく)HomebrewからPureをインストールできているか?
- Zshの設定ファイル内でfpathを追加できているか?
※なお、もしnpm版を使いたい場合は以下を参考にしてnpm用のパスをZsh設定に追加してあげれば良さそうです。
そもそも「パスを通す」って何?
-
OSのCLIでコマンドを実行する際、コマンド名を入力するだけで(フルパスを入力してくても)パッケージが実行できてしまうのは、コマンドの実行ファイルが格納されているパスが「ファイルシステム上のどこに保存されているか」のリストがOSの環境設定(環境変数)に含まれているため
-
ソフトウェアやそれを実行する環境によっては、インストールしたパッケージが「OSの環境設定に含まれていない」パスに保存されてしまうことがある
-
目的のパッケージが置かれているパスを、OSがコマンド検索対象として正しく認識できるように「環境変数に必要なパスを追加してあげること」を慣用的に”パスを通す”と表現する
ハマりやすい原因
- Pureのインストール方法が複数ある
- M1 Mac以降、fpath変数の値(コマンド実行時にデフォルトで検索してくれるパス群)が変わっている模様
教訓:公式ドキュメントのreadmeをちゃんと読みましょう(自戒)
おわりに
開発環境のセットアップ周りってつまづきやすいですよね。
- 開発開始時に実施することが多いため初心者ほどハマりやすい
- 各OSの環境設定やコマンド、シェル設定、パッケージ管理ツールなど、ちゃんと理解するのがそこそこ難しい
- ネットで見つかる備忘録的なメモ情報にはとりあえずコマンドのみ羅列されていることが多い
- 主流のCPUアーキテクチャ(x86→ARM)やシェル(Bash→Zsh)など、環境変遷で設定方法も変わってしまう
一見遠回りになりますが、設定やコマンドを実施する際は「この作業はシステム目線で何のためにやっているのか?」「これらのコマンドや設定の意味は何か」を一つずつ確認するようにしたいなと改めて思いました。