Although applications are free to interpret environment variables outside the system-defined set, it is nowadays fairly unusual to actually do so. Environment values are not really suitable for passing structured information into a program (though it can in principle be done via parsing of the values). Instead, modern Unix applications tend to use run-control files and dotfiles.
There are, however, some design patterns in which user-defined environment variables can be useful:
Application-independent preferences that need to be shared by a large number of different programs. This set of ‘standard’ preferences changes only slowly, because lots of different programs need to recognize each one before it becomes useful.[102] Here are the standard ones:
The name of the user's preferred editor (often used by shellout commands).[103]
The name of the user's preferred mail user agent (often used by shellout commands).
The name of the user's preferred program for browsing plaintext.
The name of the user's preferred program for browsing Web URLs. This one, as of 2003, is still very new and not yet widely implemented.