On Thu, Mar 29, 2018 at 09:42:34PM +0100, Jonathan de Boyne Pollard wrote: > I think that login.conf is a step in the right direction, and I'm planning > on making tools that support it. Or, rather, on making the tools that > already support it on the BSDs also support it on Linux operating systems. > > * http://netbsd.gw.com/cgi-bin/man-cgi?login.conf > > * https://www.freebsd.org/cgi/man.cgi?query=login.conf > > * https://man.openbsd.org/login.conf > > * http://jdebp.eu./Softwares/nosh/guide/userenv-fromenv.html > > I already use them to set the GUI environment from login.conf on TrueOS. > > * https://unix.stackexchange.com/a/390089/5132
I have an extremely simple real-world litmus test which every system I've ever seen so far has failed: How do I set MAIL=$HOME/Maildir/ in the login environment of every user, regardless of their shell, or how they log in (console, ssh, X Display Manager, GNOME Display Manager, etc.)? That's it. Simple, right? But login.conf can't do it. And pam_env.so can't do it. They only allow static strings with no substitutions. In fact I'm not aware of ANYTHING that can do it. The closest I've seen is sshd_config which uses %h and %u tokens in some contexts, but only for specific sshd configuration parameters -- not for setting environment variables. In the real world, today, the only solution is to duplicate that setting in multiple places, so that (hopefully) every conceivable login method + shell combination will pick up at least one of them.