gggggraziegrazie

graizegrazieさんのやったこと、学んだことを記録する雑記帳です

Windowsの環境変数についてメモ

Windows環境変数について、特に問題が発生しなかったので、今まで特に理解を深めることなく使っていました。しかし最近開発をしている中で、知らなかった点が何点か出てきました。本記事では、僕が新しく知ったことについて記載します。

Windowsの2つの環境変数の違い

Windows環境変数には、

の2種類存在します。何となく違いはわかっていたものの、しっかりと調べたことがありませんでした。今回は2つの変数の違いについて列挙します。

適用ユーザ

 システム環境変数は、PC固有の環境変数です。そのため、同一PCを使用する全ユーザが参照できます。ユーザ環境変数は、その名の通り、各ユーザ固有の環境変数です。そのため、PCを共有するAさんとBさんがいた時、Aさんが設定した環境変数はAさんしか使うことができません。

優先順位

 ユーザ環境変数とシステム環境変数で同一名の環境変数が設定されている場合、その優先順位は
 ユーザ環境変数 < システム環境変数
となります。つまり、同一名の環境変数が定義されていると、システム環境変数の値が使われます。そのため、名前は分けるべきです。
 なお、環境変数Pathに関しては挙動が異なり、
 "システム環境変数のPath;ユーザ環境変数のPath"
の様に、連結した形で認識されます。ただし、特殊な事情を覗いて、無意味に同一名の環境変数を使うことは、後々のトラブルにつながりかねません。そのため、おすすめできません。

環境変数コマンドプロンプトから設定する方法

 今までは「システムの詳細設定」から設定を行っていたため、面倒でした。たまたまコマンドプロンプトから設定する方法を見たので、ここにメモしときます。

コマンドプロンプトだと、「Windowsボタン」+「r」で起動できるから便利ですよね。

設定方法

 設定には"setx"コマンドを使います。ただし、設定する環境変数が、「ユーザ環境変数」か「システム環境変数」かで、オプションを付ける・付けないが変わってきます。

ユーザ環境変数

setx 環境変数名 パス

システム環境変数

setx /m 環境変数名 パス

となります。なお、既存の環境変数に値を追加する場合は、
 %環境変数名%;パス
とすれば、パスを追加することができます。