I found weird situation and looked into it by myself but I couldn't solve it. so I'm writing down this mail now. I wanted to make a new term with modifed process-environment but it did not work properly when I make a new term from eshell buffer. The situation can be reproduced as below. 1) start emacs with 'emacs -Q' 2) evaluate below code in any buffer. (let ((process-environment (cons "TEST=1234" process-environment))) (make-term "test-term" "/bin/bash")) 3) moved to buffer 'test-term' and type 'echo $TEST' and you can see the result '1234' Above is what I expected modified process-environment variable would work and it actually works as I expected. However there is a condition it doesn't work as I expected. 1) start emacs with 'emacs -Q' 2) 'M-x eshell' to open eshell buffer. 3) evaluate below code in eshell buffer. (let ((process-environment (cons "TEST=1234" process-environment))) (make-term "test-term" "/bin/bash")) 4) moved to buffer 'test-term' and type 'echo $TEST' and you can see nothing. The modified process-environment variable is not properly affected if the code is evaluated in eshell buffer. The eshell buffer is the only buffer that I found the above code is not working properly. This is tested on GNU Emacs 25.3.1 (x86_64-pc-linux-gnu, X toolkit, Xaw scroll bars) of 2017-12-13 Possibly this might not be a bug and there is specific reason it works that way but I couldn't have found any information about this and couldn't have solved this by myself neither. So now I am sending this bug report. Thanks for everyone contributing to emacs. I appreciate it. Thanks.