2009-11-11 18:48:39 +0000 2009-11-11 18:48:39 +0000
141
141

Где установить $PATH в OS X 10.6 Snow Leopard?

Я набираю echo $PATH в командной строке и получаю

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

Мне интересно, где это устанавливается, поскольку мой файл .bash_login пуст.

Меня особенно беспокоит то, что после установки MacPorts он установил кучу мусора в /opt. Не думаю, что этот каталог вообще существует в обычной установке Mac OS X.

** Обновление:** Спасибо jtimberman за исправление моего утверждения echo $PATH.

Ответы (7)

161
161
161
2009-11-11 20:57:32 +0000

При запуске bash он читает следующие файлы каждый раз, когда вы входите в систему. Для целей ОС X это означает каждый раз, когда вы открываете новое окно Terminal.

/etc/profile
~/.bash_profile
~/.bash_login (if .bash_profile does not exist)
~/.profile (if .bash_login does not exist)

Когда вы запускаете новую оболочку, вводя bash в командной строке, она читает .bashrc

ОС X также использует ~/.MacOSX/environment.plist для установки большего количества переменных окружения, включая пути, если необходимо.

Наконец, /etc/paths и /etc/paths.d тоже считываются оболочкой.


/opt/local/bin и т.д. добавляются в ~/.tcshrc MacPorts. Также не забудьте заглянуть в ~/.cshrc.

25
25
25
2011-03-25 18:07:37 +0000

Серьезно, Леопард дал нам новый способ добавить путь. Просто создайте файл, содержащий ту часть пути, которую вы хотите добавить, и поместите его в /etc/paths.d

Быстрый пример - сделать это за один шаг:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Иначе, вы можете просто перейти в /etc/paths.d и поместить файл туда напрямую. В любом случае, все части пути к файлам в этом каталоге будут добавлены к пути по умолчанию.

Это также работает для manpath.

Вот ссылка на более подробную информацию: ars technica: как мне добавить что-нибудь в PATH in snow leopard?

Во 2-ой заметке: MacPorts помещает всё в каталог opt именно потому, что он не используется в материалах Apple. Таким образом, это не конфликтует. В их руководстве (отлично написанном, BTW) есть объяснение, почему он использует opt и как изменить это по умолчанию, если вы хотите. 0x2 и [ MacPorts Guide ]0x3 и [ MacPorts Guide ]

4
4
4
2009-11-11 19:07:28 +0000

Чтобы показать свой путь, эхо $PATH.

echo $PATH

Чтобы установить свой путь, отредактируйте ~/.bash_profile, а не ~/.bash_login.

3
3
3
2012-02-07 19:36:18 +0000

Есть также путь, определенный шш.

Сравните echo $PATH с ssh localhost 'echo $PATH'. Так как ssh не читает /etc/профиль, /usr/libexec/path_helper не запускается и таким образом /etc/пути пропускается. Теперь попробуйте ssh localhost 'source /etc/profile; echo $PATH'. Пути должны быть ближе. Остальные различия, скорее всего, будут связаны с модификацией путей в вашем .bash_профиле (который также пропускается ssh) и .bashrc (который читается ssh).

Если вы хотите, чтобы ваш путь к ssh был похож на обычный путь к терминалу, вы можете добавить source /etc/profile к вашему .bashrc.

2
2
2
2013-06-01 09:50:21 +0000

Это можно определить и в том, и в другом:

  • Системные переменные - /etc/paths
  • Пользовательские переменные - смотрите объяснение @ Стев Фолли
1
1
1
2009-11-11 19:13:39 +0000

На самом деле он хранится в вашем файле .profile вместо .bash_login, и обычно MacPorts использует его вместо файла .bash_login.

Также каталог /opt обычно создается MacPorts и хранит свои файлы в этой папке.

1
1
1
2012-06-26 01:40:17 +0000

Что касается утилиты docs для /usr/libexec/path_helper, начальные компоненты для $PATH были взяты из /etc/paths и по умолчанию выглядят как

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

для OS-X Snow Leopard.