Assuming you are talking about environment variables that control various aspects of your pipeline, I would personally shy away from setting environment variables at the "system" level for the following reasons:
- It's weird and ever changing on macOS (as per your post)
- It's even weirder on Windows, where GPOs, the registry and roaming profiles interact in weird and wonderful ways so that the set of environment variables you end up with and what they are set to is at best a stochastic process (and I'm not convinced that quantum probabilities aren't also involved). I just spent hours trying to figure out how my profile was ending up with some environment variables we thought we had eradicated years ago.
- You need a process to keep all your machines updated, and make sure they all have the right values (see comments about Windows).
- By definition you can only have a single set of variables for all users and all projects on a system.
For those reasons (and others) many studios use some kind of layered bootstraping setup where users login with as vanilla an environment as possible, and you then "start the pipeline" which creates a context with the right set of environment variables with multiple levels of possible override (show, shot, discipline...), either through running a script which creates a terminal shell with the right environment, running a GUI, or both. Python and something like GitBash / Cygwin on Windows (native bash on Linux / macOS) makes it portable and feasible to support all 3 environments.
Sorry, I realize that doesn't answer your immediate question at all...