Mojave (10.14) setting environment variables

environment-variablesmojave

There are other questions and topics just like this but I can not find anything that is specific to 10.14 Mojave. I have tried the ~/Library/LaunchAgents/environment.plist method and I have tried to move the same file to /Library/LaunchDaemons (and restarted) but it does not affect Emacs when it is launched from the dock, Spotlight, or the Applications window.

In that file, I did launchctl setenv PATH $PATH:/usr/local/bin Curiously, when Terminal (bash) is launched and echo $PATH > /tmp/bash.debug is the first line in ~/.bash_profile, the output is /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin so… something has prepended /usr/local/bin while I was attempting to append it.

I have not tried things like /etc/launchd.conf or ~/.MacOSX/environment.plist because the pages I find say that both of those stopped working a while back.

In particular, I want to add /usr/local/bin to PATH. Currently, my work around is to do it in my Emacs start up files.

There was one person who mentioned that setting system wide environment variables in MacOS is a bad idea and I'm tempted to go along with that. The Emacs specific solution I have works and doesn't have any side effects. But, I'd like to know how to do it … if it is possible. Once I get curious about something its hard for me to let it go.

As always, thank you very much for your time.

Best Answer

The answer to this one in Mojave is to create a named file in /etc/paths.d, for instance

vi /etc/paths.d/local_bin

Put

/usr/local/bin

in the file, save and quit. Start another terminal window and it will be on your path.

I have one for MacPorts

$ cat MacPorts 
/opt/local/bin