Strange behaviour for setenv & getenv in OS X Yosemite
Asked Answered
H

1

1

When I set an environment variable

launchctl setenv FOO test

I can fetch the value by

launchctl getenv FOO

which returns me 'test', but a simple

echo $FOO

doesn't substitute, the result is empty. In same terminal as well as in new terminal.

Background: Yosemite 10.10 doesn't support /etc/launchd.conf anymore for system wide settings, so Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra? looks pretty promising, but I need the access to the env vars via $VARNAME, which doesn't work in my case.

Homogenetic answered 20/11, 2014 at 16:52 Comment(2)
Have you tried restarting Terminal.app?Nauseous
That was the trick :) I just opened a new tab or window but didn't killed the old Terminal.app before. Now all's fine. Thanks!Homogenetic
S
1

As I wrote in section Issues / problems here in order your env variables were correctly taken by applications after system reboot you will need:

  • either login twice: login => logout => login
  • or close & re-open applications manually, where env variables should be taken
  • or do NOT use feature "Reopen windows when logging back".

This happens due to Apple denies explicit ordering of loaded services, so env variables are registered in parallel with processing of the "reopen queue".

Stubble answered 20/11, 2014 at 20:45 Comment(1)
I even read that couple of times but misunderstood close & re-open for Terminal.app. It's not about closing one terminal window and opening a new one but about quitting Terminal.app as app. Which makes sense afterwards :)Homogenetic

© 2022 - 2024 — McMap. All rights reserved.