как я устанавливаю глобальную переменную среды path на os x?

<p>я хотел бы добавить к глобальной переменной среды path в os x, чтобы все пользовательские оболочки и приложения с графическим интерфейсом получали одинаковую среду path.</p><p>я знаю, что могу добавить путь в сценарии запуска shell, но эти настройки не наследуются приложениями с графическим интерфейсом.</p><p>единственный способ, который я нашел, - это переопределить переменную среды path в <strong>/ etc/launchd.conf</strong>:</p><pre><code>setenv path /usr/bin:/bin:/usr/sbin:/sbin:/my/path </code></pre><p>я не мог найти способ действительно добавить к path в <code>launchd.conf</code>.</p><p>я немного обеспокоен этим методом, но пока это единственное, что работает. есть ли способ лучше?</p>

<p> <a href="https://serverfault.com/questions/16355/how-do-i-set-the-global-path-environment-variable-on-os-x/16736#16736">информация о графическом интерфейсе пользователя palmer</a> верна, но есть более удобный способ изменить путь, который видит shell. как <a href="https://serverfault.com/questions/16355/how-do-i-set-the-global-path-environment-variable-on-os-x/62109#62109">medaslave сказал</a> , вы можете редактировать <code>/etc/paths</code>, но еще лучше вы можете поместить текстовый файл в <code>/etc/paths.d/</code>, в котором есть путь, и все оболочки будут правильно его строить.</p><p>например, в моей системе:</p><pre><code>$ 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 

/etc/launchd.conflaunchd.conf файл  является единственным полным решением, которое будет работать как для командной строки, так и для приложений с графическим интерфейсом на <a href="http://en.wikipedia.org/wiki/os_x_mountain_lion">os x v10.8 (mountain lion) и <a href="http://en.wikipedia.org/wiki/os_x_mavericks">v10.9 (mavericks ), который будет работать с 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 - только для некоторых снарядов этот ответ основан на том же вопросе из  <a href="https://stackoverflow.com/questions/135688">установка переменных среды в mac os x .

вам нужно будет установить его на основе shell-by-shell; оболочки bash и csh-like не используют одни и те же файлы конфигурации и синтаксис для настройки path.попытка сделать это в launchctl не будет работать, потому что переменные окружения устанавливаются при входе в систему; они не существуют в масштабе всей системы в unix вне сеанса shell.итак, вы хотите добавитьsetenv path "$path:/add/my/extra/path" </code></pre><p>к <code>/etc/csh.cshrc</code> а также</p><pre><code>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">  printer <string>myprinter</string> path <string>/path/to/thing/i/need</string> display <string>0:1</string>  </plist> подробнее о environment.plist <a href="http://developer.apple.com/documentation/macosx/conceptual/bpruntimeconfig/articles/environmentvars.html">есть на сайте apple .

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

вы смотрели на справочную страницу для path_helper утилита командной строки в os x? я ответил на <a href="https://stackoverflow.com/questions/347286/what-are-the-various-files-that-could-have-path-declarations-for-os-x-terminal-in/347292#347292">в некоторой степени связанный с этим вопрос о so , который, я думаю, вам может пригодиться.

я не уверен, что кто-то описал <strong> самый простой </strong> и самый <strong> элегантный </strong> способ. по крайней мере, на <a href="http://en.wikipedia.org/wiki/mac_os_x_snow_leopard">mac os x v10.6 (snow leopard).возиться с [/etc/|~/.] из [profile|bashrc] файлы могут работать, но это что-то вроде хака. /etc/paths.d/ каталог это путь: sudo в ваш любимый редактор.  создайте новый файл с именем name (только не называйте это чем-то, что уже есть) в /etc/paths.d/ с путем на строку: /usr/x11/bin /developer/usr/bin   затем добавьте eval '/usr/libexec/path_helper -s  на profile или bashrc, и все будет хорошо.  

я не уверен, почему вы используете /etc/launchd.conf в отличие от /etc/profile - но я не эксперт в mac os x - я верю, что я уверен, что это работает, но launchd - реализация/замена mac os x для init - mac os x смущает меня.тем не мение, setenv path "$path:/more/paths:/and/more/paths"</code> будет работать (tcsh), и эквивалент bourn shell будет <code>export path="$path:/more/paths:/and/more/paths" - я понятия не имею, как launchd связано с определенной оболочкой.я думаю, что задал больше вопросов, чем ответил =)

я не уверен, что launchd принимает это, но попробуйте:setenv path "$ path:/my/path"</pre>