An environment variable defines some aspect of a user's or a program's environment that can vary. Generally set during the login procedure, for a user the environment variable establishes some component of the user's working environment, such as the default printer , browser , or text editor to be used. Because these are preset as values specific to the identified user, they save time that would be used selecting them at each login. Environment variables are used across multiple languages and operating systems to provide information to applications that may be specific to the user request.
The UNIX shell uses environment variables to send information about the user's environment (such as the current working directory or the terminal type, for example) to the programs being run. The variable definitions are passed on to any program that is not built into the shell, and can be consulted, or modified by the program. For example, "TERM" (environment variables are expressed as upper case by programming convention) defines the type of terminal used, "PATH" defines the directories to be searched for programs corresponding to command names, and "USER" defines the particular user, so that access permissions may be checked for each request.
The common gateway interface ( CGI ) uses environment variables that are set when the server executes the gateway program, to pass information about requests from the server to the script . The server sends out environment variable definitions such as "SERVER_SOFTWARE," which identifies the name and version of the responding server software; "SERVER_NAME," which identifies the server's hostname, DNS alias , or Internet Protocol ( IP ) address; and "GATEWAY_INTERFACE," which identifies the CGI specification used. These environment variables are not request-specific, and are sent with every request. Other environment variables are specific to the type of request being sent, such as "SERVER_PROTOCOL," which identifies the name and revision of the protocol used for the request, and "REQUEST_METHOD," which identifies the method used for the request.