環境変数
読み:かんきょうへんすう
外語:environment variable

 オペレーティングシステムが持っている、情報共有の機構の一つ。
目次

概要
 タスク(プロセス)に情報を与え、その動作を変更するために用いられている。
 環境変数は、変数名=内容、という関係を文字列で設定して用いるシンプルな機構である。
 もともとはUNIXで使われており、これがCP/Mを経てMS-DOS、Windowsでも使われるようになった。
 UNIXが由来であることからシェルとコマンドラインのソフトウェアから使われることが多いが、実際はGUIアプリケーションであっても利用できる。
 UNIXでは、環境変数に対してシェル変数というものもあり、これは当該のシェル内のみで有効な変数である。環境変数はシェルから起動されるプロセス(子プロセス)にも継承されるが、シェル変数は継承されない。つまり、シェル変数と環境変数の最大の違いは、その有効範囲である。

特徴

概念
 Bシェル系の場合、シェル変数と環境変数は殆ど一体化しており、シェル変数をエクスポート(外部公開)したものが環境変数となる。
 一方、Cシェル系ではシェル変数と環境変数は全く異なるものとして扱っており、変数の設定や削除のコマンドも別に用意されている。

設定方法

取得/設定API
 BSDPOSIXでは、getenv()とsetenv()という関数で環境変数の取得と設定が可能である。
 この関数はWindowsでも利用できるが、WindowsではさらにAPI関数としてGetEnvironmentVariable()とSetEnvironmentVariable()を用意している。

UNIXシェル
 コマンドラインからの操作方法は以下のとおり。変数名はVERであるものとする。

Bシェル系
 様々な箇所で自動的に登録されるが、ユーザーが独自に必要な設定は、~/.bashrc に記述する事が多い。
シェル変数を設定 (変数VERにdataを設定する)
VER=data
シェル変数を環境変数にする
export VER
シェル変数と環境変数を同時設定する
export VER=data
環境変数(とシェル変数)を削除する
unset VER
環境変数を確認する
printenv

Cシェル系
環境変数を設定 (変数VERにdataを設定する)
setenv VER test
環境変数を削除
unsetenv VER
環境変数を確認する
printenv

MS-DOSシェル
 MS-DOSおよびWindowsのコマンド プロンプトでは、シェル変数というものはなく、環境変数のみがある。
環境変数を設定 (変数VERにdataを設定する)
SET VER=test
環境変数を削除 (=の後に内容がないと削除となる)
SET VER=
環境変数を確認する (引数なしで実行すると一覧表示となる)
SET
 コマンドによる設定は一時的なもので、Windowsでは、システム環境変数とユーザー環境変数を、コントロールパネルから設定する。

主な環境変数

MS-DOS
 MS-DOSおよびWindowsのコマンド プロンプトで代表的な環境変数は次のとおりである(大文字と小文字は同一視される)。
COMSPEC
コマンドシェル(COMMAND.COM)のフルパス。CONFIG.SYSのSHELL行が反映されるが、さもなくば未設定となる。(例) C:\COMMAND.COM
PATH
実行ファイルを検索する対象となるディレクトリ。セミコロンで区切って複数指定できる。
PROMPT
プロンプトの設定。設定が無い場合、PC-DOSと古いMS-DOSは PROMPT=$n$g の動作をする。新しいMS-DOSは標準で PROMPT=$p$g
TEMP または TMP
テンポラリファイルを置くためのディレクトリ。DOS時代はRAMディスクがよく使われた。
 その他、アプリケーションがよく使うもの。
TZ
タイムゾーンと時差を指定する。DOSにはタイムゾーン管理機能がなかったため環境変数を用いた (例) JST-9
INCLUDE
Cコンパイラーが使う、Cのヘッダーファイルのあるディレクトリ
LIB
Cコンパイラーが使う、Cのライブラリファイルのあるディレクトリ

Windows
 Windows 7で標準的に使われている主な環境変数は次のとおりである。一覧はsetコマンドで表示される。
ALLUSERSPROFILE
(例) C:\ProgramData
APPDATA
(例) C:\Users\username\AppData\Roaming
CommonProgramFiles
共有コンポーネントフォルダー (例) C:\Program Files\Common Files
CommonProgramFiles(x86)
共有コンポーネントフォルダー (例) C:\Program Files (x86)\Common Files
CommonProgramW6432
共有コンポーネントフォルダー (例) C:\Program Files\Common Files
COMPUTERNAME
コンピューター名
ComSpec
シェルのフルパス。MS-DOSと同じ (例) C:\Windows\system32\cmd.exe
HOMEDRIVE
ホームフォルダーのドライブレター (例) C:
HOMEPATH
ホームフォルダーのフォルダー (例) \Users\username
LOCALAPPDATA
(例) C:\Users\username\AppData\Local
LOGONSERVER
現在ログオンしているドメインコントローラー (例) \hogehoge
NUMBER_OF_PROCESSORS
現在のプロセッサーの数(実際にはコア数、HTT有効時はコア数の倍になる) (例) 8
OS
OSの種類 (例) Windows_NT
PATHEXT
拡張子が省略された時に候補とする拡張子のリスト (例) .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE
プロセッサーの種類 (例) AMD64
PROCESSOR_IDENTIFIER
プロセッサーの種類 (例) Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL
プロセッサーの種類 (例) 6
PROCESSOR_REVISION
プロセッサーの種類 (例) 2a07
ProgramData
(例) C:\ProgramData
ProgramFiles
(例) C:\Program Files
ProgramFiles(x86)
(例) C:\Program Files (x86)
ProgramW6432
(例) C:\Program Files
PROMPT
プロンプトの設定。MS-DOSと同じ (例) $P$G
PUBLIC
PUBLICフォルダーのパス (例) C:\Users\Public
SESSIONNAME
(例) Console
SystemDrive
Windowsのインストールされているドライブ (例) C:
SystemRoot
Windowsのパス (例) C:\Windows
TEMP または TMP
(例) C:\Users\username\AppData\Local\Temp
USERDOMAIN
現在ログオンしているドメイン名
USERNAME
現在ログオンしているユーザー名
USERPROFILE
(例) C:\Users\username
windir
Windowsのパス (例) C:\Windows

FreeBSD
 FreeBSDでよく使われている主な環境変数は次のとおりである。一覧はenvコマンドで表示される。
EDITOR
エディター (例) vi
GROUP
ログイン中のユーザーのグループ名
HOME
ホームディレクトリー (例) /www/home/username
HOSTTYPE
ホストの種類 (例) FreeBSD
LOGNAME
ログイン中のユーザー名
MAIL
ログイン中のユーザーのboxファイル (例) /var/mail/username
MACHTYPE
マシンの種類 (例) x86_64
OSTYPE
OSの種類 (例) FreeBSD
PAGER
ページャー (例) more
PATH
実行ファイルを検索する対象となるディレクトリ。コロン(:)で区切って複数指定できる。
PWD
カレントディレクトリ (例) /home/username
SHELL
使用中のシェル (例) /bin/tcsh
TERM
使用中のターミナル (例) xterm
USER
ログイン中のユーザー名
VENDOR
プロセッサーのベンダー (例) amd

Linux
 Linuxでよく使われている主な環境変数は次のとおりである。基本的にはFreeBSDと同じだが、異なるものもある。一覧はenvコマンドで表示される。
ftp_proxy
FTPのプロクシー。(例) ftp://username:pass@192.0.2.123:8080
HOME
ホームディレクトリー (例) /home/username
http_proxy
HTTPのプロクシー。(例) http://username:pass@192.0.2.123:8080
https_proxy
HTTPSのプロクシー。(例) https://username:pass@192.0.2.123:8080
LANG
言語とエンコード名 (例) ja_JP.utf8
LOGNAME
ログイン中のユーザー名
no_proxy および NO_PROXY
プロクシーを使用しないホスト名やIPアドレスの指定。カンマ(,)で区切って複数指定可能
PATH
実行ファイルを検索する対象となるディレクトリ。コロン(:)で区切って複数指定できる。
PWD
カレントディレクトリ (例) /home/username
SHELL
使用中のシェル (例) /bin/bash
TERM
使用中のターミナル (例) xterm
USER
ログイン中のユーザー名
USERNAME
ログイン中のユーザー名

再検索