A variable that is bound in the current environment. When evaluating an expression in some environment, the evaluation of a variable consists of looking up its name in the environment and substituting its value.
Most programming languages have some concept of an environment but in Unix shell scripts it has a specific meaning slightly different from other contexts. In shell scripts, environment variables are one kind of shell variable. They differ from local variables and command line arguments in that they are inheritted by a child process. Examples are the PATH variable that tells the shell the file system paths to search to find command executables and the TZ variable which contains the local time zone. The variable called "SHELL" specifies the type of shell being used.
In other programming languages, e.g. functional programming languages, the environment is extended with new bindings when a function's parameters are bound to its actual arguments or when new variables are declared. In a block-structured procedural language, the environment usually consists of a linked list of activation records.