Внесение изменений в PATH, чтобы / usr / local / bin был впереди / usr / bin

24

Я пытаюсь установить brew, но получаю следующее предупреждение:

Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:

2to3
2to3-2.7
idle
idle2.7
pydoc
pydoc2.7
python
python-config
python2.7
python2.7-config
pythonw
pythonw2.7
smtpd.py
smtpd2.7.py

Consider amending your PATH so that /usr/local/bin
is ahead of /usr/bin in your PATH.

Я понятия не имею, как изменить путь. Я исследовал несколько файлов из этого поста о переполнении стека (http://stackoverflow.com/questions/8886114/using-brew-with-ruby-1-9-2), но не могу найти подходящий путь для редактирования. Единственный файл, который у меня есть, это мой файл / etc / profile, который в данный момент выглядит так:

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
    PATH="/Library/Frameworks/Python.framework/Versions/2.7/local/bin:${PATH}"
export PATH

Я хотел просто удалить Python, а затем переустановить его с помощью homebrew, но я немного нервничаю из-за того, что ломаю слишком много вещей одновременно.

Есть ли простой способ изменить путь? Должен ли я создать файл .bash_profile? Спасибо за любую помощь заранее.

threenovation
источник

Ответы:

30

Да, создайте .bash_profileфайл в вашем домашнем каталоге, содержащий

PATH="/usr/local/bin:$PATH"

а затем выполните одно из следующих действий, чтобы сделать изменение активным

  • выполнять . ~/.bash_profile
  • выполнить PATH="/usr/local/bin:$PATH"в текущей оболочке
  • перезапустить Терминал
Гленн Джекман
источник
2
@threenovation, если приведенный выше ответ верен, могу ли я предложить вам пометить его как ответ (щелкните галочку рядом с ответом)
Стю Уилсон,
Интересно, стоит ли это экспортировать? Дочерние процессы также должны иметь этот новый путь. Также: когда я настроил brew, он не предупредил меня, что / usr / bin появился до / usr / local / bin.
Стивен Лу
@StevenLu, он уже экспортирован к тому времени, как вы доберетесь до .bash_profile. Не мешало бы явно экспортировать его снова, но не обязательно.
Гленн Джекман
Спасибо за это. Сработало "Твоя система рвется варить".
Везу
Кажется, я получаю повторяющиеся записи в $PATH.
flow2k
10

Вам нужно изменить / etc / paths, чтобы / usr / local / bin был указан перед / usr / bin . Для этого вам понадобится sudo ваш редактор.

Один из способов открыть редактор

 sudo open -t /etc/paths
Константин Спирин
источник
Мой PATH был правильно настроен в моем .bash_profile, но не в /etc/paths. Это работало прекрасно.
Ник Томлин
7
НЕ ИСПОЛЬЗУЙТЕ этот метод для установки своего пути - есть риск, что нетерминальные приложения подберут "завариваемые" компоненты и потерпят неудачу. Использование «sudo» также должно быть красным флагом, если вы действительно не понимаете, что делаете (особенно с системой разработки на уровне пользователя, такой как Mac Homebrew). Редактирование вашего .bash_profile и перезапуск терминала должны быть достаточными.
rholmes
@rholmes Так что изменения .bash_profileвлияют только на интерактивные пользовательские оболочки, а не на другие приложения?
flow2k
1
@ flow2k .bash_profile повлияет на интерактивные пользовательские оболочки. Любые экспортированные переменные будут видны приложениям, запускаемым из командной строки оболочки (например, запуск «обычного» приложения Mac или команды командной строки). Некоторые подробности можно найти здесь, но они делают более четкое различие, чем то, что вы просили: scriptingosx.com/2017/04/about-bash_profile-and-bashrc-on-macos Ответ от glenn jackman - тот, который нужно использовать ,
rholmes
1
@ flow2k да, ты правильно сказал.
Ролмс