MacでCLIツールをインストールするときに行うターミナルでの「パスを通す」とは一体なにか?

ターミナルでなにかインストールするときに「パスを通す」作業を行います。
なんとなく理解しているつもりでしたが、人に説明できないなと思ったので、まとめて整理しておきます。
パスを通すとは何か?
「パスを通す」というのは、「特定のプログラムをプログラム名だけで実行できるようにする」ことです。
最初自分は勘違いをしていて、実行ファイルのパスを記述することだと思っていたのですが、あくまでそれは過程で、最終的なゴールは「特定のプログラムをプログラム名だけで実行できるようにする」ことです。
例えば当ブログで過去にパスを通す作業をしたツールに「anyenv」があります。
ターミナルでanyenvコマンドを使って○○env系のインストールやバージョン管理ができるものです。
しかし、インストールしただけではanyenvコマンドは使えません。
インストール先である「/opt/homebrew/bin/brew」ファイルを指定して「ここにあるファイルの、このプログラムを実行してください」と指定する必要があります。
あくまでイメージですが、実際には下記のようなコマンドになります。
/opt/homebrew/bin/brew shellenv anyenv init ○○ただこれを毎回入力するのは面倒です。
そこで、anyenvとコマンドを打ったら、指定したファイルを見てプログラムを実行するようにあらかじめ設定しておきます。
このことを「パスを通す」と言っています。
逆にパスを通していないと、anyenvコマンドを打っても「そんなコマンドは知らない」と言われてエラーになってしまいます。
パスの通し方
シェルの確認
パスを通すために必要な設定ファイルは、使っているシェルによって変わります。
使っているシェルは下記コマンドを実行すると確認できます。
echo $SHELL設定ファイルはbashでもzshでも2種類ありますが、「profile」とついている方はログイン時に1回だけ実行されて、「rc」と付いている方はログイン後にシェルを切り替えたときなどにも実行されるようです。
| シェル | 設定ファイル(ログイン時) | 設定ファイル(起動時時) | 備考 |
|---|---|---|---|
| bash | .bash_profile | .bashrc | |
| zsh | .zprofile | .zshrc |
bashの場合は「.bash_profile」に書いて、zshの場合は「.zshrc」に書くように書いている記事を見かけますが、どちらに書いてもそこまで大差なさそうです。
設定ファイルが2種類あって、微妙な違いがあることだけ覚えておきましょう。
パスの設定
設定ファイルに下記の記述をして、パスを指定します。
export PATH=$PATH:追加したいフォルダのパス記述したあとは設定をターミナルに反映する必要があります。
ターミナルを再起動するか、もしくは下記コマンド(.zshrcの部分は設定ファイルごとに変更してください)を実行すると設定ファイルの内容がターミナルに反映されます。
source .zshrcパスの設定自体はよく行うのですが、手順通りにするだけになっていました。
何が起こっているのか理解しておくことで、エラーが出たときや想定外のことが起こった場合にも対処できるようになります。
操作自体はよくしているけど、理解しきれていないようなことは、時間があるときにちゃんと調べて少しずつ理解を深めていきたいです。

WordPressのヘッダーにツールバーが表示されないときは、wp_headやwp_footerが入っているか確認
scpコマンドでターミナル接続先のリモートファイルをローカルにダウンロードする方法
MAMPでローカル開発環境にWordPressをインストールする手順
Dart Sassの変数の基本的な使い方|Dart Sass入門
Neovimを使い始める最初の一歩として便利な「LazyVim」
Nuxt.jsでコンポーネントを作成してコードの共通化を行う|Nuxt.jsの基本
Local by Flywheelのページ遷移を軽くする設定
gulpでPostCSSを使う方法
Facebookでシェアした記事の画像反映ができていない時の修正方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Figmaで図形の分割をして簡単にレイアウトを作成する拡張機能「Split shape」
WordPressで作成した記事をSlackでシェアしたときに、抜粋文が長く表示される場合の対処法
Nuxt.jsでaxios-moduleを使ってAPIからデータを取得・表示する|Nuxt.jsの基本
Alfredと1Passwordの連携をもっと便利に使いこなすための1Passwordのカテゴリ管理方法
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法
ATOKで住所の入力をラクにする方法(郵便番号や町名からの住所変換)
HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法
Path Finderを使ってキーボードだけでファイル操作する方法(基本操作編)