This probably pertains more to Win32 Emacs than *nix based Emacs as the problems are likely to manifest in Windows where things land up in places where you least expect it. At least on *nix systems, the process of finding out which configuration files are read is straightforward from
etc to the shell configuration files(
.profile, .rc), in that order.
On Windows, I have no idea where things are read and in what order. So how do we find out what are the values set for
HOME,
USER etc on Emacs?
M-x getenv will provide a prompt that lists all the set variables. It comes with completion, so one should be able to see the entire list of set variables that Emacs has read and is using. So, if you're wondering where the
TEMP files are being stored,a
M-x getenv RET TEMP would spit out the value stored by Emacs.
So, that's how one queries for the environment variables but how does one go about changing them?
We use
M-x setenv to set the values for the session temporarily as in
M-x setenv RET TERM RET dumb
Please note these changes do impact or change the OS set values but is limited to the current Emacs session. If you want to make those new values available for all future sessions, add something similar to your
.emacs. For e.g. to set the
TERM value, do
A good discussion on using the above information to selectively set certain values can be found on
this gmane emacs thread.
The
process-environment variable has the list of overridden environment variables for subprocesses to inherit launched from within Emacs. It would get modified by issuing a
setenv command. The doc strings for
getenv,setenv (by using
C-h f ) has more information on their usage.