PATHが通っていない
ファイル名を指定しても実行できない状態だよ
「ここを探すぜ」リストに実行ファイルのある場所が書いてないよ
コンピュータさんが「そのファイル、どこにあるの?」ってなっているよ
簡単に書くよ
PATHが通っていない(読:パスガトオッテイナイ)とは
主にプログラミング……の前の環境構築の話で出てくる表現のひとつ
であり
コンピュータさんが持っている「ここを探すぜ」リストにファイル(実行ファイル)のある場所が書かれていないから、(ファイルの置いてある場所を指定せず)ファイル名を指定しただけではファイルが見つからなくて実行できない状態のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・実行ファイル
・PATH
・PATHを通す
について説明します。
特に「PATHを通す」については、かなりガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
実行ファイルは「プログラムなファイル」です。
べちべちっ!とダブルクリックすると、お仕事を始めます。
(Windowsの場合)拡張子は「.exe」であることが多いです。
PATHは「ファイルやフォルダの場所(と名前)を示す情報」です。
PATHは
C:\Windows\system32\
や
/usr/bin/perl
のような形で書きます。
Windows系では「\(円マーク、バックスラッシュ)」区切りで階層を表現します。
例えば
C:\Windows\system32\
は
「C:」ドライブの中にある「Windows」フォルダの中にある「system32」フォルダ
を表しています。
UNIX系(LinuxとかMacとか)では「/(スラッシュ)」区切りで階層を表現します。
例えば
/usr/bin/perl
は
「usr」フォルダの中にある「bin」フォルダの中にある「perl」という名前のファイル
の意味になります。
基本的な考え方は住所と同じです。
位置を示す情報です。
左に行くほど大きなくくりになります。
「PATHを通す」は「『ここを探すぜ』リストに(実行ファイルのある)場所を書き加えること」です。
……と、いきなり言われても何がなんだかサッパリ分かりませんよね。
大丈夫です。
順を追って説明します。
その代わり、説明がクソ長いです。
適度に休憩をはさみながら読み進めてください。
それでは、いってみましょう。
コンピュータさんに「この実行ファイルを動かせ!」と命令するときのファイルの指定方法は2つあります。
それは
1.実行ファイルの「置いてある場所」と「ファイル名」を伝えるやり方
2.実行ファイルの「置いてある場所」に移動して「ファイル名」を伝えるやり方
の2つです。
1の、実行ファイルの置いてある場所とファイル名を伝えるやり方では
「置いてある場所」にある「ファイル名」を動かせ!
という命令をコンピュータさんにします。
例えば、そうですね。
「C:」ドライブの中にある「test」フォルダの中に「piyota.exe」というファイルが あったとしましょう。
これをPATHとして表現すると
C:\test\piyota.exe
に なります。
1のやり方で「『piyota.exe』を動かせ!」と命令する場合は
「C:\test\piyota.exe」を動かせ!
のように書くのです。
そうすると、コンピュータさんは
「C:\test\」にある「piyota.exe」を動かせってことね
と理解してくれます。
2の、実行ファイルの置いてある場所に移動してファイル名を伝えるやり方では
「置いてある場所」に移動しろ!
「ファイル名」を動かせ!
という2つの命令をコンピュータさんにします。
ここで大事なポイントがあります。
それは
コンピュータさんは、場所を指定しないと今いる場所を探す
です。
覚えておいてください。
例えば、そうですね。
「C:」ドライブの中にある「test」フォルダの中に「piyota.exe」というファイルが あったとしましょう。
これをPATHとして表現すると
C:\test\piyota.exe
に なります。
2のやり方で「『piyota.exe』を動かせ!」と命令する場合は
「C:\test\」に移動しろ!
「piyota.exe」を動かせ!
のように書くのです。
そうすると、コンピュータさんは
「C:\test\」に移動して、そこにある「piyota.exe」を動かせってことね
と理解してくれます。
繰り返しになりますが
コンピュータさんは、場所を指定しないと今いる場所を探す
です。
自分が今「C:\test\」にいれば「C:\test\」にある「piyota.exe」(C:\test\piyota.exe)を探します。
「C:\hoge\」にいれば「C:\hoge\」にある「piyota.exe」(C:\hoge\piyota.exe)を探します。
ふぃ~、長くなってきましたね。
ここまでの説明は、なんとなく分かったでしょうか。
ピンと来ていない人は、適度に休憩をはさみつつ、頑張って復習してください。
ここまでの内容も結構、大事です。
さて、先ほど
コンピュータさんは、場所を指定しないと今いる場所を探す
と説明しました。
この説明ですが、実はちょっとだけウソを書いています。
本当は
コンピュータさんは「ここを探すぜ」リストに書いてある場所を探す
のです。
コンピュータさんは自分の中に「もし探す場所を指定されなかったら、ここを探すぜ!」なリストを持っています。
実行ファイルのファイル名しか指定されなかったときは「ここを探すぜ」リストに書いてある場所の中にその実行ファイルがないかを探してくれます。
今いる場所を探してくれるのは「ここを探すぜ」リストに「今いる場所」と書いてあるからです。
例えば、そうですね。
「ここを探すぜ」リストに
1.今いる場所(「.」と書くと「今いる場所」の意味になります)
2.C:\test\
3.C:\hoge\
と書いてあったとしましょう。
この状態でピヨ太君が「『piyota.exe』を実行せよ!」と命令しました。
おっと、ピヨ太君はファイル名しか指定していませんね。
これでは「piyota.exe」がどこにあるか分かりません。
このような場合、コンピュータさんは「ここを探すぜ」リストを見て
1.今いる場所のpiyota.exe
2.C:\test\piyota.exe
3.C:\hoge\piyota.exe
のどれかがないか探してくれます。
つまり
「ここを探すぜ」リストに場所を書いておくと、その場所にある実行ファイルはファイル名を指定するだけで実行できるようになる
のです。
それを踏まえて「ここを探すぜ」リストに(実行ファイルのある)場所を書き加えるのが「PATHを通す」です。
繰り返しになりますが「ここを探すぜ」リストに場所が書いてあれば、ファイル名を指定するだけで実行できます。
PATHを通すのは
実行ファイルを(ファイルが置いてある場所を指定しないで)ファイル名を指定するだけで実行できるようにする
ためです。
言い方を変えると
実行ファイルがどこに置いてあるかを気にしなくて済むから
です。
ちょっと専門用語を使った専門的な例になりますが、Javaでコンパイルするときには、本来であれば
C:\Program Files\Java\jdkうんちゃら\bin\javac test.java
のように指定する必要があります。
ただし「C:\Program Files\Java\jdkうんちゃら\bin\」を「ここを探すぜ」リストに書いておくことで
javac test.java
と指定すれば動くようになります。
この「C:\Program Files\Java\jdkうんちゃら\bin\」を「ここを探すぜ」リストに書いておく作業を指して「javacにPATHを通す」と言ったりするのです。
かなり長くなりましたが、ここまでが予備知識です。
以上を踏まえて
「『ここを探すぜ』リストに(実行ファイルのある)場所が書いていないから、ファイル名だけ指定されても動かないんだよね~」な状態
が「PATHが通っていない」です。
例えば、そうですね。
「ここを探すぜ」リストに
1.今いる場所
2.C:\test\
3.C:\hoge\
と書いてあったとしましょう。
この状態でピヨ太君が「『piyota.exe』を実行せよ!」と命令しました。
おっと、ピヨ太君はファイル名しか指定していませんね。
これでは「piyota.exe」がどこにあるか分かりません。
このような場合、コンピュータさんは「ここを探すぜ」リストを見て
1.今いる場所のpiyota.exe
2.C:\test\piyota.exe
3.C:\hoge\piyota.exe
のどれかがないか探してくれます。
ところがどっこい「piyota.exe」がある場所は「C:\piyopiyo\」でした。
そうすると、コンピュータさんは「piyota.exe」を見つけられませんよね。
「『piyota.exe』を実行せよ!」と言われても「そんなファイルは、なかったよ!」としか返せません。
このような状況を指して「『piyota.exe』へのPATHが通っていない」と表現したりします。
せっかくなので、もう一例、見ておきましょう。
先ほど「PATHを通す」を説明したときに「javac」の例を挙げましたよね。
Javaでコンパイルするときには、本来であれば
C:\Program Files\Java\jdkうんちゃら\bin\javac test.java
のように指定する必要があるけど「C:\Program Files\Java\jdkうんちゃら\bin\」を「ここを探すぜ」リストに書いておくことで
javac test.java
と指定すれば動くようになるよ!と書きました。
もし「C:\Program Files\Java\jdkうんちゃら\bin\」が「ここを探すぜ」リストに書かれていない状態で
javac test.java
を実行すると、例えば以下のようなエラーになります。
'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このエラーは「『javac』って何?よく分からないや!」と言っています。
javac(正確には「javac.exe」)のある場所が「ここを探すぜ」リストに書かれていない
↓
「javac.exe」が見つからない
↓
(該当しそうなファイルとかがないので)「javac」が何を指しているか理解できない
のが原因です。
このような状況を指して「javacにPATHが通っていない」と表現したりします。
PATHが通っていなくてエラーになる場合の対処法は
1.PATHを通す
2.ファイルの場所も指定して実行する
のどちらかです。
先ほどの「javac」の例で言えば「javac(javac.exe)」のある場所「C:\Program Files\Java\jdkうんちゃら\bin\」を「ここを探すぜ」リストに書き加えるのが「1.PATHを通す」です。
※実際にPATHを通す方法は今回は説明しません。必要に応じて、他の場所で情報を補完してください。
例えば
javac test.java
ではなく
C:\Program Files\Java\jdkうんちゃら\bin\javac test.java
のように指定して実行するのが「2.ファイルの場所も指定して実行する」になります。
一言でまとめるよ
まぁ「PATHが通っていない」って単語が出てきたら「コンピュータさんの持つ『ここを探すぜ』リストにファイルのある場所が書かれていないから、ファイル名だけを指定すると実行できない(ファイルが見つからない)状態なんだな~」と お考えください。
おまけ
■訳してみるよ
「path(パス)」の意味は「小道」とか「散歩道」とか「進路」とか「方針」とかです。
「が通っていない」は日本語ですね。
何となく くっつけると
小道が通っていない
となります。






