はじめに
なにかインストールして新たなコマンドを使おうと思ったら、bash: [コマンド]: command not foundのように、コマンドがない...?なんてことがよく起こります。
その時に、**「PATHを通す」**というワードをよく耳にすると思いますが、そろそろスルーできないレベルになってきそうなので、それがどういうことなのか、また、それに関する周辺知識も含めて(すでに似たような記事はごまんとありますが。。)、自分用に書きます。
PATHを通すとは
コマンド検索パスを追加すること
らしいですが、これだけではよくわからない。。
コマンド検索パスとは
シェルがコマンドの実行ファイルを探しに行くパス
とのこと。
普段からよく使っているターミナル(Windowsだったらコマンドプロンプト)などのコンソールで入力するcdなどのコマンド。
あれは、/binディレクトリにcdの実行ファイルが入っているから、コマンドが使えるようになってます。
実は、/bin/cdと実行ファイルのパスをコマンドとして入力しても同じらしいですが、そんな書き方しなくてもcdだけでもその機能(ディレクトリの移動)を使いたいですよね。
/bin/cdのような書き方をしなくてもcdだけで処理ができるのは、$PATHという環境変数(OSがデフォルトで持ってる変数)に格納されている、いくつかのパスのなかに、入力した文字列と同名の実行ファイルが格納されているディレクトリがあれば、/bin/cdのような書き方じゃなくても、シェルが処理を実行してくれるからなんですよね。
つまり、cdの例の流れとしては、
cdを入力
↓
シェルが環境変数$PATHを参照
↓
環境変数$PATHに格納されている/binディレクトリにcd実行ファイルがあることをシェルが確認
↓
シェルがcdを/bin/cdと同様のコマンドとして捉え、処理を実行
という感じです。
その、環境変数$PATHに格納されているパスを、コマンド検索パスといいます。
つまり、PATHを通すということは、**「$PATHにコマンドの実行ファイルがあるディレクトリのパスを追記してあげて、コマンドを使えるようにしてあげる」**ということなんですね。
コマンド検索パスとコマンド実行ファイルの確認方法
新しいプログラムやライブラリをインストールして、そのコマンドを使用したいのなら、$PATHにそのコマンドの実行ファイルがあるディレクトリのパスを記載してあげればOKです。
でももしかしたら、すでに、パスが記載されているかもしれませんね。
その場合に$PATHを確認したいときはecho $PATHをすると、$PATHに格納されているパスが見れます。パスは:で区切られてます。このなかのディレクトリを漁れば、探せます。
echo $PATH
# 出力結果
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
また、which [実行コマンド]でそのコマンドの実行ファイルのパスを表示してくれます。こっちの方が早いです。
which cd
# 出力結果
/usr/bin/cd
これをやっても、見つからないのなら、PATHを通す必要があります。
PATHの通し方
コマンドを入力しても、bash: [コマンド]: command not foundのようにコマンドがない、とPCさんから言われたら、PATHを通してあげると解決します。
具体的には、$PATHを直接いじるのではなく、.bash_profileや.bashrcなどのご自身のシェルの設定ファイルというものをいじります。(ここでは、bashを例にしてご説明します)
シェルの設定ファイルは、ログインしたとき(.bash_profile)や、シェルを切り替えたとき(.bashrc)に読み込まれるファイルで、このファイルに$PATHを編集するコマンドを記載することで、PATHを通していきます。
ちなみにこの設定ファイルたちは、ホームディレクトリに隠しファイルとして存在してます。ホームディレクトリ上(cd ~で移動できます)でls -aで確認できます。(環境によっては、デフォルトでない場合もあるそうです)
全体の流れ
先にPATHを通す全貌を記します。
- シェルの設定ファイルを開く
- 設定ファイルに
$PATHを編集するコマンドを記載する - 追記した設定ファイルを実行する
シェルの設定ファイルを開く
まずは、設定ファイルを開きましょう。
デフォルトでbashをシェルで使っているので、.bash_profileを開いて、そこに書き込んでいきます。
$ open ~/.bash_profile
# ~はホームディレクトリ
そのほかのシェルをご使用の方はご自身のシェルの設定ファイルに、また、ほかのシェルでbashに切り替えてbashを使っている方は、.bashrcに、それぞれ書き込みましょう。
自分の環境のシェルがわからない方はecho $SHELLで確認できます。
また、デフォルトで設定ファイルが存在しない場合は、ホームディレクトにご自身のシェルの設定ファイルを作成してください。(touch [ファイル名]で作成できます)
設定ファイルに追記する
次に、開いた設定ファイルに以下の文を追記します。
export PATH=[通したいパス]:$PATH
exportコマンドは環境変数を設定するためのコマンドで、export [環境変数]=値で、環境変数を設定します(ちなみに、=なので上書きされます):区切りなので、通したいパスの後に:をつけて、その後に現状の$PATHを加えます。
追記した設定ファイルを実行する
最後に、追記した設定ファイルを反映させます。以下のsourceコマンドを実行してください。
$ source ~/.bash_profile
以上で、PATHが通ったかと思いますので、[コマンド] -vみたいな感じで、コマンド起動ができるか確認してください。
リファレンス
PATHを通すとは? (Mac OS X) Qiita
【zsh, bash】macでPATHを通す方法 - not found と出てしまったら Qiita