После многих испытаний с различными вариантами я делаю вывод:
Существует ли единый способ установки PATH
приложений, запускаемых различными способами (например, сценарий оболочки, Finder и Spotlight)? Ну да и нет
- Нет : настройка
PATH
в сценариях запуска оболочки (например .bashrc
) работает только для приложений, запускаемых оболочками.
- Нет : настройка
PATH
текущего launchd
процесса через launchctl setenv PATH <...>
меня вообще не работает.
- Да : установка
PATH
в /etc/launchd.conf
(и перезапуск системы) сделает соответствующие PATH
видимыми в приложениях, запущенных Spotlight, Dock и Finder и впоследствии (локальными) оболочками.
- Нет : удаленно вызванные оболочки не наследуют среду. (Смотрите ... почему удаленные оболочки через ssh НЕ наследуют окружение .. )
Примечания по настройке снарядов:
Для правильного функционирования в локальных оболочках важно отключить использование /usr/libexec/path_helper
, потому что пути по умолчанию в /etc/paths
могут изменить порядок путей в PATH
. **
Для размещения удаленных оболочек необходимо повторно импортировать launchd
среду в оболочку. Используйте что-то вроде этого в вашем .bashrc
:
# the vexatious path stuff
eval $(launchctl export)
Печальными последствиями всего вопроса являются:
- Нет возможности использовать эти унифицированные настройки для каждого пользователя. (
~/.launchd.conf
не работает.)
- Нет простого способа построить PATH из разных источников, используя такие методы, как расширение домашнего каталога и др.
/etc/launch.conf
это не работает для оболочек вошло в удаленно через SSH (я предполагаю , потому чтоsshd
не проходит его окружения , наследуемое от родителяlaunchd
к ребенку оболочке.). - Я отредактирую ответ соответственно.eval "$(launchctl export)"
./etc/launchd.conf
- просто запуститьsudo -e /etc/launchd.conf
(если вы знакомы с vi) илиEDITOR=nano sudo -e /etc/launchd.conf
(если вы предпочитаете немодальный редактор).Расширяя предыдущий ответ , чтобы изменить путь
/etc/launchd.conf
, вам нужно сделать следующее.Убедитесь, что у вас есть права администратора.
Создайте новый текстовый файл со следующим содержимым, измененным в соответствии с вашими потребностями:
Сохраните его в своем домашнем каталоге как
launchd.conf
.Откройте Terminal.app (или ваш любимый заменитель) и введите:
sudo mv ~/launchd.conf /etc
В зависимости от вашего предыдущего использования
sudo
команды, вы можете получить короткое сообщение «будьте осторожны, делая то, что вы делаете», но в любом случае вам нужно будет ввести свой пароль. Все, что делает команда, это перемещает файл в/etc
каталог, который не доступен напрямую, например, при сохранении файла в TextEdit.sudo
(сокращение от «Super User DO») используется потому, что для записи в этот каталог необходимы права администратора.Перезагрузите компьютер.
И у тебя должно быть все готово. Удачи!
источник
launchd.conf
, а в том, как все приложения получают одинаковую переменную PATH единым способом.PATH
для моих приложений с графическим интерфейсом, и я решил, что помогу тем бедным душам, которые могут не знать, как повлиять на изменение ...Вы можете попробовать https://github.com/ersiner/osx-env-sync .
Он обрабатывает приложения командной строки и графического интерфейса из одного источника . И это работает с последней версией OS X (Yosemite).
источник
launchd
систему. Ваше решение имеет те же проблемы, что указаны в принятом ответе.