Subject: bug#65551: 29.1; Eshell on MS-Windows using plink: 'plink' is not recognized as an internal or external command...

From: Jim Porter <[email-masked]>
Date: Sat, 26 Aug 2023 12:16:12 -0700

On 8/26/2023 7:11 AM, Jordan Wilson wrote:
> I've found a bug in Eshell on MS-Windows on 29.1. This is a regression
> from 28.2. When connected to a remote machine using putty's "plink",
> using any commands on the remote machine (e.g. not built-in to eshell)
> prints this error in the eshell buffer (details replaced):

Thanks for reporting this. I can reproduce this issue. Does evaluating 
the following work?

   (setf (alist-get 'tramp-login-program
                    (alist-get "plink" tramp-methods nil nil #'equal))
         (list (concat "\"" (executable-find "plink") "\"")))

If so, I think I've identified the bug: in 
'eshell-gather-process-output', we set the 'process-environment' to 
Eshell's environment variables. In a remote directory, this includes the 
remote PATH. However, that confuses Tramp, which uses that remote PATH 
to look for the local "plink.exe".

Michael, what would be the best way to handle this? In Eshell, I want to 
be able to call 'make-process' to start a remote process using the local 
system's default 'process-environment', but for the remote process to 
see Eshell's modified environment variables. I see that there's 
'tramp-remote-process-environment', but I'm not sure that's the right 
thing for me to use. Do you have any ideas?