PATHを通すとはどういうことか

プログラミング
タナイ
タナイ

“PATHを通す”ってよく聞くけど、言われた通りにやってればとりあえず動くし、それで後から困ることもないからよくわからないまま……

こんな状態の人ってけっこう多いんじゃないかと思い、記事を書きました。しかも、ネットをざっくり漁ってみてもイマイチわからない……っていうのがPATHだとか環境変数なんじゃないかな、と。

かくいう私も恥ずかしながら、“PATHが通ってないとちゃんと動かない”ということはわかるものの、どういう仕組みかよくわかっていませんでした。

vimのインストールで久しぶりにPATHに遭遇したので、今回はちゃんと調べてそこそこ理解してきましたよ!

PATHが通っていないとどうなるか

まずは、“PATHを通す“ことを考えるにあたって、PATHが“通っていない”場合を考えましょう。遠回りなようで、実はこれが一番近道だと思います。

たとえば、あなたはテキストエディタであるvimをターミナルでインストールしたとします。(vimはあくまで例なので、アプリならなんでもかまいません。)

vimはコマンドライン上で動作するテキストエディタです。よく使うので、簡単なコマンドでいつでも起動できることが望ましいですね。

コマンドライン自体がわからない場合は、ProgateのCommand Lineを履修するとだいたいイメージつかめるかと思います。

つまり、vimと打ったら、どんなディレクトリにいてもvimが起動するようにしたい。ちょうど下記のtouchrmのようなコマンドがどんなディレクトリにいても使えると同じようにしたいイメージです。

% touch readme.txt
% rm readme.txt

ただ、ひとつここで問題があります。

vimを起動するためには、“vim本体の場所を指定して”起動しなくてはなりません。

どういうことかと言うと、これは人間がファイルを扱う場合を想定すると分かりやすいかもしれません。

タナイ
タナイ

たとえば、あなたがPCで昔に作ったファイルを見たい場合、保存されている場所が分からなければ無理ですね

それと同じでターミナルはvimと言われてもvimのありかがわからないので起動できません。そのため、下記のように場所を指定して起動します。

% user/local/bin/vim

ただ、これを毎回コマンドで打つのは超絶めんどくさいですね。そこで、下記のようにvimと打つだけでvimが起動するようにPATHを通すわけです。

% vim

場所が分からないなら探せばいいじゃない

上のたとえ話を聞くと、勝手に探してくれないの?と思う人がいるかもしれません。

人間が昔に作ったファイルの場所を忘れたら探しますよね。究極的には、それと同じで検索をかければいいわけです。

ただ、コンピュータは人間と違ってファイルがどこにあるかの見当がつかないので、コンピュータ内にある全てのファイルを1つ1つ検索する必要があります。

タナイ
タナイ

お分かりかと思いますが、これだと時間がかかりすぎて到底使い物になりません。

PATHを通すとプログラム本体のありかがわかる

コマンドラインにはいろいろなコマンドが存在します。

これを突き詰めて考えるとvimに限らず全てのコマンドにおいて、その操作を実行するためのプログラム本体をターミナルが起動していることになります。

タナイ
タナイ

じゃあ、通常のコマンドはどうやって本体のありかを認識しているの?

結論から言ってしまうとそれがPATHです。

先ほどコンピュータ内の全箇所を検索するのは時間がかかりすぎて現実的ではないと書きました。つまり、限られた狭い場所であれば検索すればすぐに見つかります。

すなわち、PATHとは単発のコマンドで起動したいプログラム本体が入っている場所を記憶しておくための“環境変数”になります。

PATHは環境変数のひとつである

いきなり環境変数という言葉が出てきましたが、PATHは数ある環境変数のひとつになります。

環境変数とは、プログラミングでいうところのグローバル変数をイメージするといいかもしれません。

タナイ
タナイ

言ってしまえばPATHは単なる変数です。

プログラム本体のディレクトリの羅列が文字列として格納されています。

環境変数PATHには、単発のコマンドで起動したいプログラム本体のありか(ディレクトリ)が羅列されています。

そして、ターミナルはコマンドを受け取ったときには、自動的にPATHに書かれているディレクトリを捜索します。

環境変数の設定

環境変数の設定には以下のようなexportコマンドを使いますが、これもPATHが単なる変数だと考えると分かりやすいです。

% export PATH="/user/local/bin:$PATH"

言ってしまえばこのコマンドは変数PATHを書き換えているにすぎません。プログラミングでいうところの下記のようなイメージです(VBA記述、&は文字列の結合子)。

PATH = "/user/local/bin" & PATH

環境変数とか気になるのは、多少なりともプログラミングに興味があったり、かじったりしている人だと思いますので、このたとえは分かりやすいのではないかなと思っています。

タナイ
タナイ

“PATHを通す”とは、変数PATHに新しいプログラム本体があるディレクトリを追記するということですね

PATHを通すのまとめ

  1. PATHを通さないとプログラム本体の場所を毎回指定する必要がある
  2. 指定を省略するためにPATHに場所を記録しておく
  3. PATHはグローバル変数だと考えればよい
  4. PATHにプログラム本体のディレクトリを追記することをPATHを通すと言う
タナイ
タナイ

これで“PATHを通す”のイメージがつかめたのではないでしょうか

コメント

タイトルとURLをコピーしました