Странное поведение для setenv & getenv в OS X Yosemite

когда я устанавливаю переменную среды

launchctl setenv FOO test

Я могу получить значение

launchctl getenv FOO

который возвращает мне "test", но простой

echo $FOO

не подставляется, результат пуст. В том же терминале, что и в новом терминале.

Фон: Yosemite 10.10 больше не поддерживает /etc/launchd.conf для системных настроек, поэтому Установка переменных среды через launchd.conf больше не работает в OS X Yosemite/El Capitan/macOS Sierra? выглядит довольно многообещающе, но мне нужен доступ к env vars через $VARNAME, который не работает в моем случае. У кого-нибудь есть идея?

Cheerio, Крис

Ответ 1

Как я писал в разделе Проблемы/проблемы здесь, чтобы ваши переменные env были правильно приняты приложениями после перезагрузки системы, вам понадобится:

  • логин дважды: login = > logout = > login
  • или закрыть и повторно открыть приложения вручную, где должны быть приняты переменные env
  • или НЕ использовать функцию "Повторно открыть окна при регистрации".

Это происходит из-за того, что Apple отказывает в явном упорядочении загруженных сервисов, поэтому переменные env регистрируются параллельно с обработкой "повторной очереди".