Die Umgebung eines Prozesses enthält eine Liste aus Paaren name=wert, die an ein ausgeführtes Programm in gleicher Weise wie eine normale Argumentliste übergeben wird. Die Namen name müssen Bezeichner im Sinne der POSIX-Shell sein, die Werte wert Zeichenketten (auch die leere).
Die POSIX-Shell und die Umgebung beeinflussen sich gegenseitig. Beim Aufruf durchsucht die POSIX-Shell die Umgebung und erzeugt eine Variable für jeden gefundenen Namen, weist ihr den entsprechenden Wert zu und markiert sie als exportiert. Ausgeführte Kommandos erben diese Umgebung. Modifiziert der Benutzer die Werte dieser Variablen oder fügt neue Variablen mit Hilfe der eingebauten Kommandos export oder typeset -x dazu, dann werden diese Teil der Umgebung. Die Umgebung, die von jedem ausgeführten Kommando gesehen wird, besteht aus den Paaren name=wert, die ursprünglich von der POSIX-Shell geerbt wurden, deren Werte von der aktuellen Shell modifiziert worden sein können, plus den Erweiterungen, die mit export oder typeset -x markiert wurden.
Die Umgebung eines einfachen Kommandos oder einer Funktion kann durch Voranstellen von Variablenwertzuweisungen erweitert werden. Eine Variablenwertzuweisung wird als Wort behandelt und hat die Form bezeichner=wert.
Die folgenden Zeilen sind für kommando äquivalent:
TERM=450 kommando argumente
( export TERM ; TERM=450 ; kommando argumente )
Wurde die Option -k beim Aufruf der POSIX-Shell oder durch das eingebaute Kommando set gesetzt, dann werden alle Variablenwertzuweisungen in die Umgebung exportiert, auch wenn sie nach dem Kommandonamen kommen.