Как изменить переменную среды PATH на OS X 10.8 Mountain Lion, которая будет видна приложениям с графическим интерфейсом? [Дубликат]

14

Я перепробовал все методы, о которых я слышал, для установки переменных среды в OS X 10.8, но ни один из них не работает

Для тестирования запустите скрипт bash из приложения с графическим интерфейсом, такого как Eclipse или IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Вещи, которые я проверял и которые не работают даже после перезагрузки:

  • /etc/paths и /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (бинарный лист сделан в соответствии с рекомендациями)
  • запуск launchctl setenv PATH $PATHиз командной строки должен был обновить PATH для приложений с графическим интерфейсом, по крайней мере, для текущего сеанса. Угадай, что, без изменений.

Кажется, что PATH всегда PATH=/usr/bin:/bin:/usr/sbin:/sbinдля приложений с графическим интерфейсом.

Сорин
источник
У вас все в порядке с решением, которое устанавливает путь bash, или вам действительно нужно изменить значение launchd базового пути для всех процессов?
bmike
Мне нужно изменить PATH, используемый приложениями с графическим интерфейсом, для терминала / Bash / ... У меня уже есть большой набор рабочих решений.
Сорин
Я не знаю, почему eclipse и другие не просто поддерживают переменные среды выполнения, поэтому каждому разработчику java на Mac не нужно беспокоиться об установке пути или источника нужных им переменных в каждом проекте.
bmike
ответ смотрите здесь: apple.stackexchange.com/questions/51677/…
Flori

Ответы:

8

С Mountain Lion /etc/launchd.confвы должны установить путь к приложениям с графическим интерфейсом. Помните, что это не файл сценария; он поддерживает только launchctlкоманды, поэтому вы должны написать что-то вроде:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

Также обратите внимание, что он не поддерживает подстановку переменных среды оболочки (например $PATH), поэтому вам придется указать каждый путь, который вы хотите включить. Это хорошая идея, чтобы сохранить оригинальные пути, которые вы упомянули ( /usr/bin:/bin:/usr/sbin:/sbin).

Вам нужно будет перезагрузиться после изменения (или создания) файла, чтобы изменения вступили в силу.

Жоао Кампос
источник
В 10.8.2 это помогло мне установить PATH, который можно было использовать с Keyboard Maestro.
TJ Луома
Страница man говорит, что вы можете использовать $ HOME / .launchd.conf, но у меня это не сработало. Использовать /etc/launchd.conf сделал. Я на 10.8.4
pedz
Это не работает для меня:-bash: setenv: command not found
Colas
Если кто-то был сбит с толку, как Колас, setenvэто launchctlкоманда, поэтому вы используете ее как launchctl setenv.
Джон Шир
3

Это работает, если вы вызываете приложение с графическим интерфейсом из терминала:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

введите описание изображения здесь

Не очень приятно или удобно, но это делает работу, если это необходимо.

Nohillside
источник
Вскоре НЕТ ПУТИ. Я не хочу этого делать, это будет работать только иногда. Приложение также может быть запущено при нажатии на файл.
Сорин
2
Как я уже сказал, это не очень хорошо, но может работать, пока Apple не исправит проблему (потому что это должно быть возможно с launchctl).
холме
2

Я приготовил другое решение, вдохновленное патриксом , которое, надеюсь, немного менее болезненно. Откройте Automator, выберите приложение в качестве цели и выберите Execute Shell script(или как его там называют, на немецком языке это «Shell-Skript ausführen», как видно выше) в качестве действия. В сценарии просто введите

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Затем сохраните все это, где вы хотите, и если вам нужно запустить YourApplicationHere , откройте вместо этого созданное «приложение автоматизатора».

Я проверил это Terminalкак YourApplicationHere , и увидел, launchctl exportчто FOO действительно настроен на bar . Я надеюсь, что это работает и для других.

Наконец, если вы используете это решение для своих переменных среды, вместо того, чтобы набирать launchctlматериал в сценарии оболочки, вы можете просто вызвать /Users/Shared/conflaunchd.sh(который вы должны сначала составить вместе с файлом, описывающим переменные).

Персиваль Улисс
источник
-1

Предположительно, launchctlобеспечивает PATHGUI Apps. Чтобы установить путь к пути оболочки, добавьте следующее в rc-файл оболочки после установки пути:

launchctl setenv PATH $PATH
исмаил
источник
1
К сожалению, это не работает :-(
nohillside
Мы даем ответы, которые делают добросовестные усилия для решения вопроса. Мы даже допускаем неправильные ответы и позволяем голосованию говорить за правильность. Комментирование, не делая его личным, - лучший способ пробить ошибочную аргументацию, а не препятствовать попыткам ответить.
bmike