新駒奈日誌

Minecraftの建築に関する情報をよろずに書いていく。

Minecraft Java版サーバ管理者のためのWindows知識(2) PATHの設定

この記事は続きものです。第1回はこちら。


※表示の都合上「\」は円マークに置き換えてください。

第2回 PATHの設定

JavaでMOD開発したい」とか「Javaのバージョンを変えてマイクラサーバを起動したい」と思う人は今回の解説を読んでおくと役に立つでしょう。2回目は何かと出てくる「PATHとはなんぞや?」という話です。

外部コマンドと内部コマンド

コマンドプロンプトで実行できるコマンドは「内部コマンド」と「外部コマンド」があり、99%くらいのコマンドはこのうちの外部コマンドに当たります。外部コマンドは、平たく言えば「単純にEXEプログラムを実行している」のと同じ行為です。それこそ前回のメモ帳(notepad)とかは典型例です。(補足:内部コマンドは、例えば「cd」などのようにコマンドプロンプトの根幹に関わるコマンドなどがあります。)

なぜ、コマンドプロンプトで「notepad」と入力するとメモ帳が開いてくれるのでしょうか?それは、環境変数のひとつであるPATHが、大きく関わっています。

絶対パス指定と外部コマンド

notepad(メモ帳)はフルの名前(絶対パス)で示すと実は「C:\Windows\System32\notepad.exe」となります。実はこの「フルのEXEの場所」をコマンドとして指定することができます。以下のコマンドは同じ意味を示します(なお、「exe」は拡張子を省略可能な点に注意。これもまた仕組みはPATHに似ている)。

> notepad abc.txt
> "C:\Windows\System32\notepad.exe" abc.txt

PATHについて

WindowsはすべてのEXEの場所を調べてくれるわけではありません。先程のように「notepad」と省略できる理由は、PATHという環境変数C:\Windows\System32と設定してあるからです。つまり、PATHは、EXEファイルが保存されている場所を予め示すための環境変数であります。

ここで、コマンドプロンプトecho %PATH%と入力してみてください。「;」で区切られているその文字の羅列の中をよ~~く探すとどこかにC:\Windows\System32がいるはずです。

>echo %PATH%
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
...(中略)...
C:\Windows\system32;C:\Windows;
...(以下略)

WHERE : コマンドのありか

「where (コマンド名)」と入力すると、コマンドの在り処がわかります。実はメモ帳は複数の在り処があるのですが、この場合はPATHの環境変数で先に設定されているもの(左側)を優先して実行します。

>where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

PATHを設定する必要がある場面

ふだん私達はPATHを意識することはありません。それはだいたいWindowsインストーラのおかげです。最近のWindowsJava(JRE)も勝手にPATHを設定します。Javaをインストールした方なら、java -versionと入力するとjavaのバーションが出てくるはず。もし「コマンドとして認識されていません」的なエラーが出たら、Javaがインストールされていないか、「java.exe」がPATHのなかに見つからないかのどちらかです。

>java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

コマンドが見つからない場合は、次項でPATHを設定しましょう。

(Option) PATHを設定する

Javaを実行する(JRE)のであれば自動でPATHを設定してくれますが、開発者向けツール(JDK)は自動でPATHを追加してくれません。理由は、複数のバージョンをインストールしたりした場合にそのほうが都合がいいからだと思います。

ここでは、比較的需要が多いJDKのPATHの設定のしかたを例に挙げます。JDKコンパイラ(javac)に対してパスを設定する場合、通常であれば「C:\Program Files\Java\jdk(バージョン)\bin」を設定する事が多いでしょう。別にJDKでなくても、自分のよく使うEXEならなんでもPATHに設定できますので、いろいろ応用が効きます。

PATHは2通りの方法で設定できます。 1. 「システムの詳細設定」から設定する。 1. コマンドプロンプトで一時的or恒久的に設定する

「システムの詳細設定」から設定する

まずは「システムの詳細設定」の方から。こちらはまぁ調べれば出てくるのでざっくりと。Windows10であればスタートメニューの検索バーに「システムの詳細設定」とでも打つとご覧の画面が出てきます。この「環境変数」ボタンを押すと環境変数の設定ができます。

f:id:komnazsk:20190319202135p:plain

「ユーザー環境変数」と「システム環境変数」の2つがありますが、ユーザー環境変数の方に設定するとミスしたときでも安心です。

f:id:komnazsk:20190319202223p:plain

  • ユーザー環境変数の一覧に「PATH」がない場合
    • 「新規」ボタンを押して変数名を「PATH」に、変数値にEXEのあるフォルダパス入力しましょう。

f:id:komnazsk:20190319202306p:plain

  • すでに「PATH」が存在する場合は
    • 「編集」ボタンをクリックして、同様にEXEのあるフォルダパスを追加しましょう。
      Windows10の場合は「新規」ボタンから、Windows7の場合はずらずらずらっとした文字列の末尾に「;(追加するフォルダパス)」のようにして追加します。

f:id:komnazsk:20190319202856p:plain

設定したら、コマンドプロンプトを再起動後に反映されるようになります。

コマンドプロンプトで一時的に設定する

バッチファイル等で一時的に環境変数を追加したい場合があります。その場合、以下ようにsetコマンドを使用します。このコマンドはすでにある「PATH」という環境変数セミコロンを挟んでさらに新しいフォルダパスを追加します。

>set PATH=%PATH%;(追加するフォルダパス)
例)
>set PATH=%PATH%;C:\Program Files\Java\jdk1.8.0_162\bin

※恒久的に追加する方法もあります(setx)がこちらの利用はあまりおすすめではありませんので省略します。