Я печатаю 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
заявления
easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit
/etc/paths
. While the new
/etc/paths.d/
thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide.
/etc/paths.d
это полезно для установочных скриптов. Если я хочу, чтобы мой установочный скрипт добавил установленную программу в путь, я могу добавить файл в/etc/paths.d
. Если я хочу редактировать путь вручную,/etc/paths
это лучший вариант.Ответы:
При
bash
запуске он читает следующие файлы каждый раз, когда вы входите в систему. Для целей OS X это означает каждый раз, когда вы открываете новоеTerminal
окно.Когда вы запускаете новую оболочку, набирая
bash
в командной строке, она читает.bashrc
OS X также использует
~/.MacOSX/environment.plist
для установки большего количества переменных среды, включая пути, если это необходимо.Наконец,
/etc/paths
и/etc/paths.d
читается оболочкой тоже./opt/local/bin
и т.д. добавлены в~/.tcshrc
MacPorts. Также не забудьте заглянуть~/.cshrc
.источник
~/.MacOSX/environment.plist
не работает для некоторых людей. В Change Path для OS X/etc/paths.d
описана альтернатива с использованием папки . Я не проверял это.~/.cshrc
. Ошеломился, пытаясь понять, почему~/.profile
не работает..bashrc
читается независимо от того, печатаете выbash
или нет.Посмотрите на файл
/etc/paths
, который используется/usr/libexec/path_helper
, который используется/etc/profile
.Для MacPorts используйте
sudo /etc/paths/opt/local/bin
и снова откройте окно терминала.источник
Серьезно, Leopard дал нам новый способ добавления пути. Просто создайте файл, содержащий часть пути, которую вы хотите добавить, и поместите его в /etc/paths.d
Быстрый пример выполнения этого за один шаг:
В противном случае вы можете просто перейти в /etc/paths.d и поместить туда файл напрямую. В любом случае любые части пути в файлах в этом каталоге будут добавлены к пути по умолчанию.
Это также работает для manpath.
Вот ссылка на более подробную информацию:
ars technica: как добавить что-то в PATH для снежного барса?
На втором замечании: MacPorts помещает все в каталог opt именно потому, что он не используется в Apple. Таким образом, это не будет конфликтовать. Их руководство (отлично написано, кстати) содержит объяснение того, почему он использует opt и как изменить это значение по умолчанию, если хотите.
Руководство по MacPorts
источник
I have to concur that there's nothing weird or bad about MacPorts using
/opt
(likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation.
Чтобы показать свой путь, введите $ PATH.
Чтобы установить свой путь, редактируйте
~/.bash_profile
, а не~/.bash_login
.источник
Также есть путь, определенный ssh .
Сравните
echo $PATH
сssh localhost 'echo $PATH'
. Так как ssh не читает / etc / profile, / usr / libexec / path_helper не запускается и, следовательно, / etc / paths пропускается. Теперь попробуйssh localhost 'source /etc/profile; echo $PATH'
. Пути должны быть ближе. Остальные различия, вероятно, будут связаны с изменением пути в ваших .bash_profile (который также пропускается ssh) и .bashrc (который читается ssh).Если вы хотите, чтобы ваш путь ssh был похож на ваш обычный путь к терминалу, вы можете добавить его
source /etc/profile
в .bashrc.источник
Это может быть определено либо:
/etc/paths
источник
На самом деле он хранится в вашем
.profile
файле вместо,.bash_login
и обычно MacPorts будет использовать его вместо.bash_login
файла.Также
/opt
каталог обычно создается MacPorts и хранит свои файлы в этой папке.источник
Что касается документации для
/usr/libexec/path_helper
утилиты, исходные компоненты для $ PATH были взяты из/etc/paths
и по умолчанию выглядит такдля OS-X Snow Leopard
источник