Categories: Mac

【Mac】PATHを通す方法

この記事では、MacでPATHを通す方法を解説します。

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の確認

現在の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の左に記述されているディレクトリから順番に探していきます。そして、コマンドが複数ある場合は、先に見つけたコマンドを実行します。

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
ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago