On Sat, 8 May 2021 at 19:51, Michael Albinus wrote: Hi Michael, > We have already a white list, which is tramp-remote-process-environment. > I'm reluctant to add package specific entries there by default, it would > be an endless story. PAGER is included as being a general purpose > environment variable, BZR_LOG and HGPLAIN are not. If packages believe > they shall be added, this could be done in vc-bzr.el or vc-hg.el. Tramp > is a stupid library, it shouldn't try to be clever. Fair enough. Let's cross out the first idea then. >> 2. Introduce a blacklist of variables that are never exported to a >> remote. This can be done by extending >> `tramp-remote-process-environment' to follow the same convention of >> `process-environment' that an entry of the form VAR, without the >> =VALUE, means removing the variable. > > There are already such variables to be unset. These are the variables > without any value, like "HISTORY=" This only works for entries in the default toplevel value of `process-environment'. Not for things added buffer-locally or in a let-binding. The heuristic that every env var which is not in the default toplevel value of `process-environment' will be exported to the remote works pretty well. But it needs a simple way to be overridden, since it can't read the user's mind. > TERM is handled special. All Tramp connections add "TERM=dumb", > hard-coded. Since this shall not be changed by a user, it isn't > configurable here. Not all connections add "TERM=dumb". Here's a counterexample: (let ((default-directory "/sudo::/") (process-environment `("TERM=dumber" ,@process-environment))) (shell-command "echo $TERM" t)) => dumber How do I tell Tramp not to export TERM=dumber to the remote in this case? To be clear: this may be a dumb example, but there are plenty of interesting use-cases involving PATH, PYTHONPATH, and so on, which are analogous. How can I set PYTHONPATH buffer-locally, but disallow Tramp to export this variable to a remote? >> As another example, python.el would append "PYTHONPATH" and >> "PYTHONHOME" globally to `tramp-remote-process-environment', since >> these variables hold directory names. > > Yes, if python.el developers prefer that. However, I doubt, that this > value is always the same for all different remote hosts, the value might > differ depending on the OS the remote host is running. That's precisely what I meant: you *do not* want to export those variables to a remote. But currently Tramp effectively forbids anyone to set PYTHONPATH buffer-locally, because this will cause them to be exported. My suggestion is easier to implement than explain. So let me repeat it in the form of a little (possibly incomplete) patch: