Какие файлы могут содержать объявления PATH для OS X Terminal? - PullRequest
6 голосов
/ 07 декабря 2008

Итак, у меня проблема с путём в OS X Leopard. Кажется, OS X добавляет другие пути, которые я не заявляю, и это портит мой приоритет пути. У меня есть только файл .bash_login, у меня нет файла .bashrc или .profile. Мой .bash_login файл таков:

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

Когда я запускаю экспорт, это путь, который он возвращает:

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"

Любые идеи о том, что можно поместить в / usr / bin и как я могу получить /usr/local/bin, чтобы иметь более высокий приоритет.

Я отмечаю это и для Rails, потому что сейчас над этим я работаю ... кажется, что встроенные в Mac Ruby, Rails и Gems имеют приоритет над тем, который я установил в /usr/local/bin Возможно, вы, товарищи-рубины, тоже можете помочь.

Ответы [ 5 ]

16 голосов
/ 07 декабря 2008

Заглянули ли вы внутрь этих двух каталогов:

/etc/paths.d/
/etc/manpaths.d

Любые пути, определенные в файлах в этих каталогах, автоматически добавляются к переменной PATH - я в основном использую эти два каталога, чтобы поместить сторонние установленные приложения в PATH. Кроме того, посмотрите на справочную страницу path_helper на OS X.

РЕДАКТИРОВАТЬ : Глядя на содержимое /etc/profile, я вижу, что path_helper выполняется первым. Страница man для path_helper говорит, что перед чтением файлов в каталогах /etc/paths.d/ и /etc/manpaths.d/, path_helper читает и устанавливает пути, определенные в файлах /etc/paths и /etc/manpaths. Взгляд на /etc/paths показывает это:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

И, я полагаю, они составляют половину того, что вы видите, как указано в PATH.

4 голосов
/ 07 декабря 2008

Похоже, ваши изменения не применяются. Примечание нет / usr / local / mysql / bin

Прочтите раздел руководства bash по INVOCATION, .bash_login читается, только если это оболочка входа в систему, а не оболочка терминала. Вам нужно вместо этого поместить его в ~ / .bashrc. Он будет прочитан для входов в систему и не входящих в нее оболочек.

1 голос
/ 14 сентября 2010

Вы также можете поместить материал в ~ / .MacOSX / Environment.plist, как описано в https://web.archive.org/web/20150330034300/http://www.astro.washington.edu/users/rowen/AquaEnvVar.html

Это сделает переменные окружения доступными для всех приложений, а не только для тех, которые запущены в терминальном (bash) сеансе.

(Похоже, что сейчас есть и лучшее предложение)

0 голосов
/ 28 декабря 2008

Просто вставьте .bashrc или .login, и все будет в порядке

0 голосов
/ 07 декабря 2008

Я также наткнулся на интересную статью на форумах поддержки Apple:

.bash_login больше не выполняется

С этой информацией я обнаружил пропущенный пустой файл .bash_profile, который у меня был, который загружал - и уничтожил всю информацию, которую я пытался установить в моем пути.

Так что, похоже, у нас может быть несколько «правильных» ответов в зависимости от ситуации.

...