Почему мои комплекты TextMate иногда не имеют доступа к переменным окружения / оболочки? - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть пакет TextMate, написанный на ruby, который обращается к хешу ENV для чтения переменных оболочки.

Иногда удается прочитать эту переменную, а иногда не находит ее. Мне не удалось выяснить закономерность.

Что определяет, какие переменные оболочки будут видны для пакета TextMate?

обновление

ах, ха! Когда я запускаю TextMate из командной строки, он работает. Если я запускаю его из док-станции, он не работает (даже если я впоследствии открою каталог из командной строки).

Итак, теперь возникает вопрос: почему TextMate выбирает в этих случаях разные среды и есть ли способ сделать их идентичными?

1 Ответ

2 голосов
/ 11 апреля 2011

Textmate запускается через launchd, а не из оболочки.

Ваш $ PATH переместится, если вы запустите что-то непосредственно из оболочки (open -a Textmate не работает, open не передаст вашу средуTextmate).

Обойти это можно следующим образом: environment.plist, launchctl или launchd.conf:

Установка переменных среды в OS X?

update

Если вы отредактируете /etc/launchd.conf и перезагрузите компьютер, изменения вступят в силу.Каждая строка может быть командой launchctl, такой как setenv VAR_NAME "VAR_VALUE".Затем вы можете запустить этот файл с launchctl your_file.

Хотя перезагрузка - это боль.И если вы хотите индивидуальные настройки среды, это не хорошо.Apple предлагает использовать ~/.launchd.conf для пользовательских настроек, но пока не реализовала эту функцию.

Вы можете настроить скрипт для запуска при входе в систему с помощью LoginHook и LogoffHook (см. документация Apple ).Или, используя LaunchAgents.Подробные инструкции о том, как настроить LaunchAgent, можно найти в посте nicksay на этом сообщении Macworld .

Команда launchctl setenv не работает при входе в систему. Яв настоящее время я бьюсь головой об этом.

Я столкнулся с той же самой проблемой, с которой вы столкнулись сегодня (пакет Makefile не передает LIBRARY_PATH в gcc), и сейчас я пишу скрипт на python, который будет читатьфайл назначений переменных при входе в систему, сохраните копию текущей среды и этот файл с назначениями, а затем выгрузите все переменные при выходе из системы.Это также напоминает мне, у меня должна быть опция обновления.Я опубликую комментарий со ссылкой на репозиторий Github для этого здесь, когда я закончу.Если это работает, то это.

...