Вопрос: как установить глобальную PATH на OS X?


Я хотел бы добавить глобальную переменную PATH в OS X, чтобы все пользовательские оболочки и приложения GUI получали одну и ту же среду PATH.

Я знаю, что могу добавить путь к сценариям запуска оболочки, но эти настройки не наследуются приложениями GUI.

Единственный способ, который я нашел до сих пор, - это переопределить переменную среды PATH в /etc/launchd.conf:

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

Я не могу найти способ фактически добавить к PATH в launchd.conf.

Я немного беспокоюсь об этом методе, но пока это единственное, что работает. Кто-нибудь знает лучший способ?


97
2018-05-31 19:08


Источник


Видеть: stackoverflow.com/questions/347286 - rjmunro
Для Йосемити и позже см. stackoverflow.com/questions/25385934/... - thSoft
Ни один из ответов здесь не затрагивает вопрос ОП. Но комментарий здесь thSoft прав на деньги! Возможно, это должно быть объединено или связано с указанным вопросом: stackoverflow.com/questions/25385934/... - Kevin Buchs


Ответы:


Информация GUI пользователя palmer верна, но есть более удобный способ изменить путь, просматриваемый оболочкой. Как и mediaslave, вы можете редактировать / etc / paths, но еще лучше вы можете удалить текстовый файл в /etc/paths.d/, в котором есть путь, и все оболочки правильно построят путь.

Например, в моей системе:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

70
2018-05-28 06:53



Приятно, спасибо! Примечание. Для этого вам необходимо выйти из системы и выполнить вход в систему до того, как она будет работать. - weronika
@weronika: Я обнаружил, что достаточно выйти и перезапустить X11 (менее болезненным, чем вырубка). Я не пробовал это в Terminal, - Peter Gluck
Я имел в виду Терминал - ты прав, я забыл указать. - weronika
Это полезно знать, но НЕ отвечает на вопрос OP, что этот механизм не применяется к приложениям с графическим интерфейсом. ОП искали унифицированный решение, которое позволяет ему присоединять по умолчанию $PATH, - mklement
что вы подразумеваете под «моей системой» здесь, @cogg? Разве мы все не используем OS X здесь? Извините, но я все еще новичок в OS X. Я использую OS X 10.7 - ericn


/etc/launchd.conf

launchd.conf является единственное полное решение, которое будет работать как для командной строки, так и для графических приложений на OS X 10.8 и 10.9, который будет работать с GUI и консольными приложениями для всех пользователей.

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

Добавить

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

В приведенном выше примере я добавил /usr/local/bin к значениям среды по умолчанию для PATH.

Имейте в виду, что этот файл не является скриптом, и у вас нет возможности использовать подстановки. Кроме того, для их применения вам необходимо перезагрузить компьютер.

Помните, что все остальные являются лишь частичными решениями:

  • environment.plist не работает для приложений, запущенных через Spotlight.
  • /etc/paths - только для консоли
  • /etc/csh.cshrc или /etc/bashrc - только для некоторых оболочек

Этот ответ основан на том же вопросе https://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x


47
2018-06-04 20:30



Отличная находка, но вопрос уже говорит о запуск программ и спрашивает, как присоединять к пути в нем. - cregox
Вы действительно добавили комментарий к первому вопросу, указывающему на себя как «реальный ответ»? - TJ Luoma
Это подразумевается вашим - полезным - ответом, но просто для того, чтобы изложить это: желание OP присоединять к пути по умолчанию не поддерживается, поскольку вы не можете ссылаться на другие переменные среды в /etc/launchd.conf, - mklement
Это не глобально - среда командной строки будет отбрасывать это, когда / etc / profile вызывает path_helper и перестраивает PATH из / etc / paths и /etc/paths.d/ - Dave X
в соответствии с apple.stackexchange.com/questions/106355/..., это уже давно не работает для Йосемити или позже - ericn


Вам придется установить его на оболочку оболочкой; bash и csh-подобные оболочки не используют одни и те же файлы конфигурации и синтаксис для настройки PATH.

Попытка сделать это в launchctll не будет работать, потому что переменные среды устанавливаются при входе в систему; они не существуют в системе Unix за пределами сеанса оболочки.

Поэтому вы захотите добавить

setenv PATH "$ PATH: / add / my / extra / path"

на /etc/csh.cshrc и

export PATH = "$ PATH: / more / paths: /

в / etc / bashrc.

Если вам нужны переменные окружения в приложениях с графическим интерфейсом, это сложнее. Вы должны создать файл .MacOSX / environment.plist в домашнем каталоге каждого пользователя. Каталог .MacOSX, скорее всего, не будет существовать по умолчанию, поэтому вам придется его создать.

Формат файла выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

Подробнее об объекте environment.plist Сайт Apple.


7
2018-06-01 12:24



Но настройки вступают в силу, если они установлены в /etc/launchd.conf ... Хммм ... / меня смущает. - Xerxes
В самом деле? Какую переменную среды вы устанавливаете там? - palmer
Просто обновление с OS X 10.8: ~/.MacOSX/environment.plist подход больше не поддерживается, и на уровне пользователя нет замены. В рамках всей системы вы можете использовать /etc/launchd.conf (и есть решение для каждого приложения). - mklement
Не отвечает на вопросы OP. - Kevin Buchs


Вы можете изменить свой глобальный путь, добавив строки в / etc / paths.

Один путь в строке.

sudo nano / etc / paths должны получить вас там.


3
2017-09-03 18:04



Это полезно знать, но он не отвечает на вопрос OP о том, что этот механизм не применяется к приложениям с графическим интерфейсом. - mklement


Вы взглянули на страницу руководства для path_helper утилита командной строки на OS X? Я ответил несколько связанный с этим вопрос о SO что, я думаю, вы можете оказаться полезными.


1
2018-06-01 12:50





Не уверен, что кто-либо простейший и большинство элегантный путь.
 По крайней мере, на 10,6,
Беспощадный [/etc/|~/.] из [profile|bashrc] файлы могут работать, но это что-то вроде взлома.
/etc/paths.d/ каталог - путь.
Судо в ваш любимый редактор.
Создайте новый файл с именем *name* (просто не называйте его тем, что уже есть) в /etc/paths.d/ с дорожкой в ​​строке:

/usr/X11/bin
/Developer/usr/bin

Затем добавьте

eval '/ usr / libexec / path_helper -s`

к профилю или bashrc, и вам должно быть хорошо идти.


1
2018-01-31 07:22



Это полезно знать, но он не отвечает на вопрос OP о том, что этот механизм не применяется к приложениям с графическим интерфейсом. - mklement


Я не уверен, что launchd принимает это, но попробуйте:

setenv PATH "$ PATH: / my / path"

0
2018-05-31 19:26



К сожалению, это не работает. Это не похоже, что у launchctll есть доступ к переменным среды, которые легко. Существует команда для получения переменных окружения, но нет абсолютно никакой документации о том, как ее использовать. - lajos