02 PATHって何?

【番外編2】PATHって何?

ところで、「第0回 Javaの環境設定」で使用した環境変数「PATH」とは何でしょう?

実は、PATH環境変数を設定しなくても、

C:\WORK>C:\Program Files\Java\jdk1.8.0_74\bin\javac HelloWorld.java

と入力すると、Javaコンパイラ(javac)を動かすことが出来るのです。
(「C:\Program Files\Java\jdk1.8.0_74」はJavaをインストールしたディレクトリ)

※「jdk1.8.0_74」の「1.8.0_74」の部分はバージョンナンバーなので、
皆さんの使用するバージョンによって違う可能性があります。
バージョンが異なる場合は適宜読み替えてください。

しかし、毎回毎回「C:\Program Files\Java\jdk1.8.0_74\bin」というのをコマンド入力の最初に加えるのは、
面倒ですよね。

そこで、「PATH」環境変数の出番となります。
「C:\Program Files\Java\jdk1.8.0_74\bin」というのをPATH環境変数に加えることで、
いちいち「C:\Program Files\Java\jdk1.8.0_74\bin」という部分を付加しなくても済むようにしているのです。

●「PATH」環境変数はプログラムファイルの検索対象を指定するもの

実は、普段Javaを使うときに入力している「javac」というコマンドは、
「C:\Program Files\Java\jdk1.8.0_74\bin\javac.exe」というプログラムファイルを表しています

つまり、「javac」と「C:\Program Files\Java\jdk1.8.0_74\bin\javac.exe」が結び付けられ、
「javac」というコマンドを入力すると「javac.exe」というプログラムファイルが実行される、
という仕組みになっているのです。

どうして、「javac」と打つだけで「C:\Program Files\Java\jdk1.8.0_74\bin\javac.exe」 が立ち上がるように
なっているのでしょう?

カンのいい皆さんはすでにお分かりかと思いますが、
ここで、「PATH」環境変数が重要な働きをしているのです。

「PATH」環境変数とは、「プログラムの検索先」を意味します
コマンドプロンプトで入力されたコマンドに合致するプログラムファイルを
実行する仕組みの中で使われます。

プログラムファイルを見つける仕組みは次のようになっています。
まず現在いるディレクトリにコマンドプロンプトで入力されたコマンドに
合致するプログラムファイルがあるかどうか調べます。
その後PATH環境変数で指定されたパスにあるかどうかが調べられます。
そして、合致するプログラムファイルがあればそれが実行される、
というような仕組みになっています。

なぜこのような仕組みになっているのでしょう?

一般にコンピュータの中にはたくさんのプログラムファイルが存在していて、
様々なディレクトリに散らばっています。

コマンドが入力されたとき、その都度それらの全てについてコマンドに合致するかどうかを
調べていくのは、かなり大変です。
さすがに処理の高速なコンピュータといえども、これでは動作が遅くなってしまいます。
そこで、コマンドファイルを置く場所をあらかじめ決めておいて、
その場所を「PATH」で指定しておく
、という仕組みになっているのです。

PATH環境変数は、コマンド検索パスをセミコロン「;」で区切って指定します。
C:\Program Files\Java\jdk1.8.0_74\bin\;C:\Windows\System32\
となっていれば、

環境変数の設定

※参考:上の環境変数の画面を開く方法は「【第0回】Javaをインストールしよう!」をご覧下さい。

C:\Program Files\Java\jdk1.8.0_74\bin\

C:\Windows\System32\

の2つから、入力されたコマンドに合致するようなプログラムファイルを探します。

ちなみに、Windowsにおいて、プログラムファイルとして認識されるファイルは、
exe、com、batといった特殊な拡張子を持つものとなります。

●「環境変数」とは?

先ほどから、「環境変数」という言葉を多用していますが、そもそも「環境変数」とは何なのでしょう?

環境変数とは、OSあるいはログインするユーザごとに設定され、
その上で動作するアプリケーションがその値を参照したり、設定したり、
アプリケーション間で共有したりするためにあるもの
です。

環境変数は変数名と値とのセットで表されます。
PATH環境変数ならば、
「PATH」が変数名、「C:\Program Files\Java\jdk1.8.0_74\bin\;C:\Windows\System32\」が値です。

環境変数は、PATH以外にも様々なものがあります。
Javaを使う上で重要な環境変数として、Javaのクラスを検索する対象のディレクトリを指定する
「CLASSPATH」があります。

また、Windows環境ではそれほどその種類は多いものではありませんが、
UNIX系のOSでは、環境変数を使うことは必須になります。
タイムゾーン(世界標準時からの時差)を設定する「TZ」や、
UNIXコマンドのマニュアルなどを表示するmanコマンドのマニュアル検索パス
「MANPATH」などです。

Windows環境で面白いものでは、コマンドプロンプトのプロンプト表示
(「C:\>」など表示されているものです)を設定するための「PROMPT」環境変数などがあります。

~ まとめ ~

1. 環境変数「PATH」は、プログラムファイルを探してくる場所であることがわかった
2. 環境変数とは、OSやログインユーザごとに共通して設定される値であることがわかった