LoginSignup
0

シンプルなTerminalテーマ「Pure」をM1以降のMacで有効化する方法

Last updated at Posted at 2023-05-07

何度かハマったのですが、ググるのに結構時間かかったので備忘として残します。

最初にまとめ

  • M1以降のMacではnpmではなくHomebrewからPureをインストールしましょう
  • Zshプロファイルに fpath で検索箇所を追記しましょう

Pureとは?

Zshのプロンプト表示をシンプルにしてくれるOSSです。

こんな風になります。

image.png

導入手順

  • 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 でファイル名確定、して抜ける
.zshrc
# 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)など、環境変遷で設定方法も変わってしまう

一見遠回りになりますが、設定やコマンドを実施する際は「この作業はシステム目線で何のためにやっているのか?」「これらのコマンドや設定の意味は何か」を一つずつ確認するようにしたいなと改めて思いました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0