環境変数とはOSなどのシステムが提供する情報共有の仕組みをいいます。OSはOS上で動作するアプリケーションと情報共有するための簡易なデータベースを持っています。
このデータベースは変数の形をとっており「変数名=値」という書式で表すことができます。主な内容としてはWindowsの場合、Windowsのバージョンや、アプリケーションの保存場所、ユーザーディレクトリの保存場所、起動可能なファイルの拡張子などがあります。
環境変数はWindowsのみが持つものでなく、UNIX, Linux, MacなどほとんどのOSで持っていますし、OSとは異なりますが、Linuxなどで使用されるシェルや、Webでもそれぞれ独自の環境変数が使われています。
それでは、環境変数はそのようにして利用されているのでしょうか?
各OS上で動作するアプリケーション(タスクと言います)は、起動時にOSの持つ環境変数のコピーを作成し、アプリケーション内で変数の値を参照、編集を行います。通常、編集された環境変数はアプリケーション終了時に破棄されますが、必要であればOSに戻されます。
環境変数は変数を使用しますが、プログラムで使用されている変数と違って、整数や不動小数点など様々な「型」を持っていません。環境変数がサポートすることのできる型は文字列型のみとなります。
環境変数の種類や値を確認するにはコマンドプロンプトの「SET」コマンドを使用すると簡単です。コマンドプロンプトではなくWindows上で確認するには以下のようにして表示させます。
環境変数パネルを表示する
「設定」から「システム」を選択し、左ペインから「バージョン情報」を選択します。バージョン情報画面の右側に「システム情報」があるので、それをクリックします。

システム情報をクリックするとコントロールパネルの「システム」が表示されますので、右ペインにある「システムの詳細設定」をクリックします。

ここまでの過程はタスクバーの検索窓に「システムの詳細設定」と入力することで省略することもできます。
システムの詳細設定をクリックすると「システムのプロパティ」パネルが表示されるのでパネル下部にある「環境変数」をクリックします。

「環境変数」パネルが表示されました。パネル上部がユーザー環境変数で、この部分はユーザーごとに違います。下部はシステム環境変数といい、システム構成によってはあまり違いがありません。(ぼかしの部分にはパスが書かれています。詳細は皆さんの環境で確かめて下さい。)

パネルを見ると「新規」「編集」「削除」と書かれていますが、既存の環境変数を編集、削除してしまうと、アプリケーションが動かなくなったり、システムが適切に動作しなくなることがあるので注意が必要です。編集などが必要な変数名と値をよく確認してから使うようにしましょう。
また、誤って編集や削除をしてしまった時のために、環境変数のバックアップを作っておくといいでしょう。
環境変数のバックアップ
環境変数のバックアップを取るにはいくつか方法がありますが、ここではコマンドプロンプトを使った方法を紹介します。
必要なコマンドは環境変数の内容を表示するコマンド「SET」コマンドです。SETコマンドは簡単な書式で環境変数の、一覧表示、絞り込み、編集、削除ができます。次に必要となるのがリダイレクトです。
このブログをずっとご覧いただいている方ならこの時点で何をするのかわかられると思いますが、念のため説明しておきましょう。
まず、コマンドプロンプトを立ち上げて、SETコマンドを使い環境変数の一覧を表示させます。次に同じ内容でリダイレクトを使いファイルに保存します。以上でバックアップ終了です。簡単ですね!
環境変数は文字列型の変数です。変数名とその値がテキストで書き出せれば、間違って編集してしまったり、削除したとしても新規に同じ変数名、値で作り直せば元に戻すことができます。
では実際にバックアップファイルを作成してみましょう。
> SET > environment-var.txt
これでカレントディレクトリにenvironment-var.txtというファイルが作成されます。TYPEコマンドなどで内容を表示してみましょう。
> TYPE environment-var.txt
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\uotaa\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=WINDOWS10
ComSpec=C:\Windows\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
HOMEDRIVE=C:
HOMEPATH=\Users\kobedneshi
LOCALAPPDATA=C:\Users\kobedneshi\AppData\Local
LOGONSERVER=\\WINDOWS10
NUMBER_OF_PROCESSORS=6
OneDrive=C:\Users\kobedneshi\OneDrive
OneDriveConsumer=C:\Users\kobedneshi\OneDrive
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\uotaa\AppData\Local\Microsoft\WindowsApps;;C:\Users\uotaa\AppData\Local\Programs\Microsoft VS Code\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=9e0a
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\kobedneshi\AppData\Local\Temp
TMP=C:\Users\kobedneshi\AppData\Local\Temp
USERDOMAIN=WINDOWS10
USERDOMAIN_ROAMINGPROFILE=WINDOWS10
USERNAME=kobedneshi
USERPROFILE=C:\Users\kobedneshi
windir=C:\Windows
と、こんな感じの内容が表示されたともいます。パッと見るだけだと何が何だかわからないかもしれませんが、じっくりよーく見てみると、全て「変数名=値」で書かれていることがわかります。
例えば、最後から3行目にある「USERNAME=kobedneshi」皆さんの アカウント名ですね。「HOMEPATH=\Users\kobedneshi」はホームディレクトリのパスがHOMEPATHという変数に入っています。
全ての変数の役割がわかるようになるにはコンピュータの知識がそれだけ必要になりますが、変数名からそれぞれの意味を調べてみるのも面白いでしょう。
環境変数一覧
| 環境変数名 | 意味 |
|---|---|
| ALLUSERSPROFILE | All Usersのプロファイルパス |
| APPDATA | アプリケーションデータディレクトリ |
| CommonProgramFiles | プログラムファイル用の共通ディレクトリ |
| CommonProgramFiles(x86) | 32bitプログラムファイル用の共通ディレクトリ |
| CommonProgramW6432 | 64Bitプログラムファイル用の共通ディレクトリ |
| COMPUTERNAME | コンピュータ名 |
| ComSpec | cmd.exeの絶対パス |
| DriverData | ドライバーデータディレクトリ |
| HOMEDRIVE | ホームドライブ |
| HOMEPATH | ホーム(ディレクトリへの)パス |
| LOCALAPPDATA | ローカルのアプリケーションデータ |
| LOGONSERVER | ログオンしているサーバ名称 |
| NUMBER_OF_PROCESSORS | プロセッサー数(CPUのCore数) |
| OneDrive | OneDriveディレクトリ |
| OneDriveConsumer | |
| OS | オペレーティングシステム名称 |
| Path | パスの一覧。登録されたディレクトリではパスなしで実行可能 |
| PATHEXT | 拡張子無しで実行可能なファイル |
| PROCESSOR_ARCHITECTURE | アーキテクチャ |
| PROCESSOR_IDENTIFIER | CPUの詳細 |
| PROCESSOR_LEVEL | CPUのFamily 値 |
| PROCESSOR_REVISION | CPUのリビジョン |
| ProgramData | プログラム用データディレクトリ |
| ProgramFiles | プログラム用ディレクトリ |
| ProgramFiles(x86) | 32bitプログラム用ディレクトリ |
| ProgramW6432 | 64Bitプログラム用ディレクトリ |
| PROMPT | コマンドプロンプトの出力タイプ |
| PSModulePath | PowerShellモジュールのパス |
| PUBLIC | Publicフォルダ |
| SESSIONNAME | セッション名 |
| SystemDrive | システムドライブ |
| SystemRoot | システムルート |
| TEMP | テンポラリディレクトリ |
| TMP | テンポラリディレクトリ |
| USERDOMAIN | ログオンしているドメイン名 |
| USERDOMAIN_ROAMINGPROFILE | ログオンしているドメイン名 |
| USERNAME | ユーザ名 |
| USERPROFILE | ユーザープロファイルディレクトリ |
| windir | Windowsディレクトリ |
