この記事では、MacでPATHを通す方法を解説します。
PATHとは、環境変数の1つでディレクトリのパスを持っている変数です。
OSが持っている変数。全てのプログラムから使うことができます。
PATHがディレクトリの場所を持っていることでコマンドをコマンド名(ファイル名)のみで実行できます。
例えば、date
というコマンドをターミナルで実行してみてください。
date
実行結果
2021年 1月13日 水曜日 00時28分47秒 JST
上記のように現在の日時が表示されました。
コマンドは実行ファイルを呼び出して実行しているので先ほどのdateコマンドはdateファイルを呼び出して実行していることになります。
しかし、dateファイルなんてどこにあるのでしょうか?
whichコマンドを実行してdateファイルの場所を確認してみましょう。
which date
実行結果
/bin/date
/binフォルダにdateファイルがあるのがわかりました。
フルパスで指定してないのになぜコマンドが実行できたかというと、PATHに実行ファイルが格納されているディレクトリのパスが記述されているからです。
コマンドを実行するとPATHに記述されているディレクトリの中から実行ファイルを探してくれます。
つまり、PATHを通すということは、PATHにディレクトリのパスを追記して「そこからもコマンドを探すよ!」っと設定することです。
現在のPATHを確認するにはターミナルで以下のコマンドを実行してみてください。
echo $PATH
実行結果
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
上記のみたいに表示されたかと思いますが、このままでは分かりづらいので「:」で分割して見てみます。「:」は分割文字です。
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
これらはディレクトリのパスです。コマンド検索パスとも呼ばれます。コマンドを実行した際にこれらのディレクトリから実行ファイルを探します。
先ほど使ったdateコマンドは「/bin」にありました。PATHに「/bin」が記述されているので、どこからでもdateコマンドを実行することができます。
しかし、PATHには優先順位があります。コマンドはPATHの左に記述されているディレクトリから順番に探していきます。そして、コマンドが複数ある場合は、先に見つけたコマンドを実行します。
~/.bashrcや~/.bash_profileに以下のコマンドを追加します。
export PATH=$PATH:追加したいコマンド検索パス
追記するにはviを使って編集するか、以下のコマンドをどちらかターミナルで実行してください。
echo 'export PATH=$PATH:追加するコマンド検索パス' >> .bash_profile
echo 'export PATH=$PATH:追加するコマンド検索パス' >> .bashrc
パスを追記したらターミナルを再起動するか、編集したファイルに対して以下のコマンドを実行します。
source ~/.bash_profile
source ~/.bashrc
優先順位の高いパスを追記する
優先順位の高いパスを追加するには左に記述する必要があります。先ほどのコマンドでは一番後ろに追記したため優先順位は最も低くなっています。
以下のコマンドを記述することで優先順位を高くすることができます。
export PATH=追加したいコマンド検索パス:$PATH