ここから本文です

この知恵ノートを「知恵コレクション」に追加しました。

追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。

知恵コレクション」に登録済みです。

再登録しました。

追加に失敗しました。

ノートに戻り、もう一度やり直してください。

すでに1,000件のノートが登録されています。

新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。

追加できませんでした。

ノートは削除されました。

Windowsで環境変数を設定する

ライターさん(最終更新日時:2016/11/29)投稿日:

  • ナイス!:

    24

  • 閲覧数:119836

印刷用のページを表示する

環境変数とは?

環境変数とは、OSがアプリケーションなどのタスクに対して、変数名とそれに結び付けられた変数値を与える、データ共有機能の中でも最も基本的なものです。WindowsになってGUI化し、アプリケーションもインストーラーによって自動的に導入されるようになって、ユーザーが環境変数というものを手動で編集する機会が減り、存在自体を知らない人も増えてきているようです。しかし、実は現在でも環境変数の重要性に変わりはありません。特に、プログラミング言語を学びたい人にとっては、必須の知識とも言えます。


このノートでは、環境変数一つでここまで記した書籍やサイトは恐らく存在しないであろうというくらい、細かく解説をしています。そのため文章が多くなっていますが、環境変数を基礎から知りたい方は面倒がらずにお付き合い頂きたく思います。


最もポピュラーな環境変数「PATH」

例えば、フリーウェアのコンパイラツール群として有名なGNUコンパイラコレクション(GCC)をインストールしたとします(WindowsへのGCCの導入は様々な方法がありますが、ここでは詳しく触れません)。ここでは、MinGWという比較的簡単に導入できるWindowsツールチェインをインストールしたとします。インストールが終わり、勇んでサンプルプログラムをコンパイルしようしました。コンパイルにはgccというコマンドを用います。それを入力してみたのですが、次のような画面が。 

1.png


コンパイルできませんでした。なぜでしょう?それは、コマンドプロンプトがgccというコマンドの在り処がわからないからです。


コンパイルWindowsでは、コマンドが実行されたときに、まずカレントフォルダー(現在選択されているフォルダー)にそのコマンドがあるかを探し、そこに無ければPATHという環境変数に設定されたフォルダーを探します。それでも無ければ、上記のような画面になってしまうのです。


これより、このPATHを設定するための手順を例にとって、環境変数の操作を紹介します。


 環境変数の設定方法

環境変数名について

Windowsでは、環境変数名の大文字・小文字を区別しません。PATH、path、Pathなどは全て同一の環境変数として扱われます。本項では、PATHという全て大文字による記述に統一しています。


なお、Linuxなど他のOSでは、大文字・小文字が異なっただけで別の変数扱いになってしまうものもあります。将来他のOSを扱いたいと思ったときに戸惑わないよう、これはWindows独自の仕様であることを抑えておきましょう。


拡張子は表示する設定にしておこう

Windowsは最初の普及バージョンとなった95以来、「登録されている拡張子は表示しない」というオプションが有効の状態が標準となっています。これは、拡張子とそれを実行するアプリケーションが結び付けられているものについては、エクスプローラー上ではその拡張子を表示しないというものです。当時のMac OSを強く意識して導入された機能と言われていますが、ファイルを探す上では迷惑千万です。「xxxというファイルはあったがxxx.exeというファイルは見つからない」という質問も度々知恵袋に寄せられています。実は、そのxxxが目的のファイルなのに。


「登録されている拡張子は表示しない」を無効にするためには、コントロールパネルやエクスプローラーから「フォルダーオプション」という設定を開き、下図の赤枠の箇所のチェックを外します。 

17.png


また、Windows 8以降ではエクスプローラーのメニューから「表示」を選択し、表示されたリボンから「ファイル拡張子」という項目にチェックを入れることで拡張子を表示させることができます(こちらは逆にチェックを入れる必要があることに注意)。 

18.png


実行したいコマンドの所在を確認しよう

PATHを設定するにあたって、まず第一にすべきは実行したいコマンドの所在を確認するということです。これを怠り、参考にしたサイトや書籍の記述を丸写しして、存在しないフォルダーを設定しても、決して意図した結果は得られません。知恵袋にPATHの設定がうまくできないという質問が度々寄せられていますが、全てはコマンドが置かれているフォルダーの所在を自分自身できちんと把握しているかにかかっているのです。


ここでは、前出のgccコマンドの所在を確認してみましょう。MinGWはデフォルトではC:\MinGWという場所にインストールされるようになっています。さらにその下にいくつかのフォルダーが展開され、その中にbinというフォルダーがあります。ここをエクスプローラーで開いてみます。 

2.png


このように、gcc.exeを始めとするコマンドファイルが大量に格納されています。この場所のフルパス名をPATHに加える必要があるのです。フルパスとは、「C:\Windows\System32」などのように、ドライブレターおよびフォルダー名の階層ごとに区切り記号を挟んだ文字列全体のことを指します。


ところで、エクスプローラーのアドレスバーは、Windows Vistaから表示形式が変わり、階層ごとに同層のフォルダーが選択できるプルダウンメニューが付くようになりました。しかし、この状態でアドレスバーの左端にあるフォルダーアイコンをクリックすると、フルパス表示に変化します。 

3.png


これをクリップボードにコピーして、PATHの設定時にペーストすることで、確実な設定を行うことができます。


ポイント

  • フォルダーの区切り記号は、日本語Windowsの環境では円記号(\)が用いられています。しかし、この記号はコンピューターの歴史的な経緯によって、他の言語のシステムでは別の文字に見えるという問題を抱えています。例えば、英語のシステムではスラッシュを逆向きにしたバックスラッシュ(\の半角文字)という文字に見えます。一部のAndroid端末などのブラウザでは、円記号で記述したページが表示上ではバックスラッシュに置き換えられてしまう現象が見られますが、これはその表示に用いられているフォントでは、円記号に当たる文字コードにバックスラッシュが割り当てられているためです。

  • 一方で、このままでは本来の円記号として表示させたい用途には都合が悪いため、近年定められたUnicodeという文字コード規格では、円記号専用に別の文字コードが割り当てられました。これが更なる混乱を招く一因にもなっており、PATHの設定にその新たなコードによる円記号を用いてしまったために正しく動作しなかったという事例も散見されます。

    ウェブサイト製作者が敢えてその新しいコードによる円記号でページを記述していたり、ウェブサーバーが自動的に変換していることもあるため、ウェブサイトから文字列をコピーペーストしたことによって設定間違いが発生したというケースもあります。

    PATHを正しく設定するためには、こうした事情をきちんと理解しておく必要もあるでしょう。

環境変数の設定画面を表示させる

まずは環境変数の設定画面を表示させてみます。ここでは、Windows 8.1での作業例を記します。


まず、コントロールパネルを開き、 「ユーザーアカウントとファミリーセーフティ」を選びます。なお、Windows VistaおよびWindows 7では、項目名が「ユーザーアカウントと家族のための安全設定」となっています。 

4.png


ここで「おや?」と思われる方も多いでしょう。多くの書籍やサイトでは、環境変数の設定手順として別のページからの操作を紹介していることでしょう。理由は後述しますので、ここではひとまずこのまま読み進めてください。


次に「ユーザーアカウント」を選択します。 

5.png


これで自分のユーザーアカウントの管理画面に移ります。その左側に「環境変数の設定」という項目があるにで、これを選択します。 

6.png


これで、環境変数の設定画面が表示されます。 

7.png


このページには、「ユーザー環境変数」と「システム環境変数」という2つの項目があります。ユーザー環境変数とは、現在ログインしているユーザーにのみ適用される環境変数、システム環境変数とは、このシステム上の全てのユーザーに適用される環境変数です。


ところで、上図では「システム環境変数」側のボタンがグレーアウトしています。つまりシステム環境変数を操作することができません。これは「不便」ではなく「安全性」と考えるべきです。大半の用途では、システム環境変数を操作しなければならない必要性はほとんどありません。むしろ、十分な理解のないままシステム環境変数を操作しようとして、OSの動作上重要な変数の設定を壊してしまうというトラブルをしばしば耳にします。ユーザーアカウントのページから操作を始める習慣を付けることで、そのような深刻な事態を防ぐことができるのです。


注意

  • Windows 10では、2015年11月にリリースされたバージョン1511になってから、前述の「環境変数の変更」をクリックしても何も反応しないという不具合が発生していましたが、2016年8月にリリースされたバージョン1607(Anniversary Updateと称されたバージョン)で修正されました。

    何らかの都合でバージョン1511のまま運用しなければならない環境では、ユーザーの種類が標準アカウントの場合、OSの標準機能ではGUIによって自身のユーザー環境変数を操作する方法が何もない状況になっています。コマンドプロンプトを用いてコマンドで設定することは可能ですが、GUIによる設定を必要とするならば、環境変数を操作するためのフリーウェアであるRapid Environment Editorなどを利用することを検討してください。 

PATHを設定する

ここでは、ユーザー環境変数にPATHを新たに追加してみます。なお、お使いの環境によっては、インストールしたアプリケーションによってすでにPATHという環境変数が存在しているかもしれません。その場合は、その設定を消さないように注意し、以降で説明するすでに存在する環境変数の編集操作を参照してください。


まず、ユーザー環境変数の枠内にある「新規」ボタンをクリックします。すると、「新しいユーザー変数」というダイアログが表示されます。ここで、変数名に「PATH」、 変数値に上記で記した通り「C:\MinGW\bin」と入力し、OKボタンを押します。 

8.png


これにより、ユーザー環境変数の欄にPATHという変数が追加されたことが確認できます。 

9.png


ところで、「新規」ボタンを押して開かれた「新しいユーザー変数」のダイアログで、すでに存在する変数名を設定してOKボタンを押すと、何の警告もなく古い設定に上書きをしてしまうという恐ろしい仕様になっています。そのようなときは、環境変数のダイアログに戻ったときにキャンセルボタンを押せば、それまでの設定が全て破棄されて最初の状態に戻るので、慌ててはいけません。


変更された環境変数は、設定完了後に新たに開かれたタスクから反映されます。例えば、設定前から開いたままのコマンドプロンプトには変更が反映されないので注意が必要です。新たにコマンドプロンプトを立ち上げて、冒頭で実行できなかったコマンドを実行してみましょう。 

10.png


無事にコンパイルが通りました。PATHの設定によって、gccというコマンドの在り処を見つけることができたからです。


環境変数の設定変更

一度設定した環境変数の設定を変更するためには、環境変数の設定画面上で変更したい変数名をクリックしてハイライトし、「編集」ボタンをクリックします。これで「ユーザー変数の編集」というダイアログが表示され、変数名や変数値の変更を行うことができます。


PATHに複数の場所を設定

環境変数PATHの変数値には、セミコロンで区切って連記することで、複数の場所を設定することができます。


C:\hoge\bin;C:\fuga\bin;C:\piyo\bin


のようにすれば、これら3つのフォルダーを対象とすることができます。なお、連記した場所に同一名称のコマンドが存在した場合、前方に記述した場所が優先されるため、注意が必要な場合があります。また、変数値を入力する部分が非常に狭いため、含めたいフォルダーの数が多くなると編集しづらくなります。一旦全体をクリップボードにコピーし、テキストエディターで編集をして、再度貼り付けると作業しやすいでしょう。


環境変数の設定に別の環境変数を用いる

環境変数の設定には、別の環境変数の設定を用いることができます。例えば、Javaの開発環境でよく用いられるJAVA_HOMEという環境変数を、下図のように新たに作成してみます。 

12.png


そして別の環境変数であるPATHでは、下図のように設定を追加します。このようにすると、%JAVA_HOME%の部分が上の図にある値に展開されます。Javaの開発環境は、バージョンごとに別々のフォルダーにインストールされます。PATHに複数の場所が大量に記述されていると、その中の一箇所を修正しようとすることは操作ミスに繋がることもあるので、こうして別の環境変数を介することで設定修正を容易にすることができます。 

13.png


Windows 10で導入された環境変数設定ダイアログ

Windows 10(バージョン1511以降)では、新しい環境変数設定ダイアログが導入されました。まず入力欄のテキストボックスが長くなり、長い変数値を入力しやすくなりました。また、「ディレクトリの参照」「ファイルの参照」というボタンが追加され、変数値をファイルダイアログから参照できるようになりました。これらを活用すれば、フルパス名の入力間違いなどを避けることができます。

22.png


また、セミコロンで区切って複数の要素を連記するタイプの環境変数(もちろんPATHも含まれる)で編集を選択すると、下図のようなリストによるダイアログを用いることができるようになりました。リストに列挙して確定すれば、それぞれの要素をセミコロンで区切った文字列が変数値として設定されます。また、「上へ」「下へ」ボタンを用いることで、優先順位の入れ替えも簡単に行えます。

23.png


ただし、このダイアログは編集専用であり、変数の新規作成では用いることはできません。まず要素が最低2つある値を持った変数を、普通のダイアログで作成する必要があります。


PATHの優先順位

環境変数PATHは、システム環境変数とユーザー環境変数で別々に設定することができます。システム環境変数側のPATHが先になり、その後ろにユーザー環境変数側のPATHが連結される形となります。連結されたことによる現在のPATHの設定は、コマンドプロンプト上で「path」というコマンドを実行することで確認できます。 

14.png


システム画面からの環境変数の設定

環境変数の設定を解説している多くのサイトや書籍では、コントロールパネルの「システム」の左側にある「システムの詳細設定」という項目をクリックした先にあるダイアログから環境変数設定画面を呼び出すように記しています。しかし、この操作を行ったアカウントの種類が「標準」であった場合、「システムの詳細設定」をクリックしたときに管理者のパスワードを求められます。パスワードを入力すると次には進めるのですが、その先の環境変数設定画面でユーザー環境変数を操作すると、それは元々のユーザーではなく、パスワードを入力した管理者のユーザー環境変数を操作したことになってしまいます。 

15.png


アカウントの種類が「標準」のユーザーである「keicha_hrs」が、上記の操作で「adminuser」という管理者のパスワードが求められ、それを入力して環境変数の設定画面を呼び出すと、下図のようになります。「adminuserのユーザー環境変数」と表示されています。この状態でユーザー環境変数の設定を変更しても、「keicha_hrsのユーザー環境変数」は何も変化しないのです。 

16.png


自分のアカウントの種類が「管理者」であることを認識した上で下記画面から環境変数を操作することは問題ありませんが、アカウントの種類という言葉が十分理解できていない方は、「システム」からの設定はお薦めできません。


システム環境変数を操作するリスク

どうしてもシステム環境変数の操作が必要なときは、前述の「システムの詳細設定」のから環境変数の設定ダイアログを呼び出します。しかし、システム環境変数は全ユーザー共通の設定であり、システムを動作させる上で重要な設定もあります。これを無闇に操作することは思わぬトラブルに繋がります。特に目立つのが、「システム環境変数のPATHを設定しようとして、気が付いたら誤って既存設定に上書きしていた」というケースです。繰り返しになりますが、環境変数設定では新規に作ろうとした変数名が重複しても、何の警告もしてくれないのです。


こうなると、Windows操作の詳しい知識がない人には、完全な復旧は極めて困難です。書籍などでもシステム環境変数を設定するように解説しているものが多く見られますが、ユーザー環境変数の設定でもほとんどの用途は満たせます。環境変数の操作に熟練するまでは、システム環境変数の操作は行わないことを強くお薦めします。


ユーザー環境変数をシステム環境変数の値に展開することはできない

Windowsが起動するとき、まずシステム環境変数が読み込まれ、次にログインしたユーザーに応じたユーザー環境変数が読み込まれます。ですから、OSはシステム環境変数を読み込んだ時点ではユーザー環境変数の内容を知り得ません。そのため、ユーザー環境変数の値をシステム環境変数に展開させることはできません。


前述のJAVA_HOMEを例に取れば、ユーザー環境変数にJAVA_HOMEを設定し、システム環境変数のPATHなどに%JAVA_HOME%を用いた記述を行っても展開されず、その変数には「%JAVA_HOME%という単なる文字列」が設定されてしまいます。


こぼれ話

Windows XPの時代までは、常用するアカウントも管理者にすることが半ば常識でした。管理者でなければアプリケーションのインストールもままならず、非常に使い勝手が悪かったからです。しかし、Windows Vistaでユーザーアカウント制御という仕組みが導入されたことによって、アカウントの種類が「標準」であっても日用的な操作にはほぼ支障を来すことはなくなりました。これにより、マイクロソフトも常用するアカウントの種類は「標準」とすることを推奨しています。 

19.png


PCの技術解説をしているサイトの製作者は、XP以前からのベテランユーザーが多くを占めているため、「システム」から環境変数を設定する操作を紹介しているものと思われます。しかし、Vista以降で初めてWindowsに触れたユーザーの割合も多くなってきたことでしょう。そして、マイクロソフトの推奨に従って「標準」でアカウントを作成した場合、参考にしたサイト通りの操作を行っても思った結果が得られないというトラブルに繋がっている事例も存在するのではないかと思います。


かく言う私も、このノートを全面改版するまでは、アカウントの種類が「管理者」であることが前提の記述をしていました。正直に申し上げると、「標準」のときに従来の方法では正しく設定できないことに気が付いたのは、つい最近のことです。これも「日常使うユーザーも管理者にするのが常識」という「悪しき慣習」の弊害と言えます。本ノートの手順であれば、アカウントの種類に左右されず設定をすることができます。


コマンドプロンプト操作による環境変数設定

Windows Vista以降では、setxという環境変数を設定するためのコマンドが提供されています。これはコマンドプロンプト上で環境変数を設定することができるコマンドで、これを用いることで上記のように長々とウィンドウを開かずとも設定ができます。しかし、長い変数値を設定しようとしたときに入力間違いなどをしてしまうと、取り消すことができません。特に熟練した人でなければ、この方法はお薦めできません。


改版履歴

(2012/11/13)初版

(2013/03/08)体裁崩れの修正

(2013/07/28)関連知恵ノートの追加

(2013/11/27)全面的に改版

(2013/11/28)少し推敲

(2013/12/24)誤記述修正

(2014/04/06)記述修正

(2015/04/28)記述追加・修正

(2016/02/16)Windows 10の不具合について注意書きを追記

(2016/04/07)上記注意書きの記述箇所および記述内容修正、Windows XPに関する記述除去

(2016/05/08)ユーザー環境変数をシステム環境変数に展開できない記述を修正

(2016/10/12)Windows 10で新たに導入されたダイアログについて追記


このノートのライターが設定した関連知恵ノート

このノートに関するQ&A

このノートに関するQ&Aは、まだありません。

このノートについて質問する

このノートについてライターの方に質問できます。

※ライターの方から必ず回答をいただけるとは限りません

※別ウィンドウで開きます

この知恵ノートのライター

アップロード写真

グレード知恵ノートのグレード:3-3

カテゴリマスター

keicha_hrsさん

ピックアップ

耳鼻科の先生に聞いた、しゃっ...
  皆さん、しゃっくりってわずらわしいですよね  ある時急に...
知っておきたい無線LANルーター...
知っておきたい無線LANルーターの知識と選び方iPod touchやPS...
厄年について——意外と知られて...
厄年とは何か厄年とは文字どおり災厄に遭いやすいといわれる...
本文はここまでです このページの先頭へ