Zmiana ŚCIEŻKI tak, aby / usr / local / bin wyprzedził / usr / bin

24

Próbuję zainstalować napar, ale pojawia się następujące ostrzeżenie:

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.

Nie mam pojęcia, jak zmienić ścieżkę. Przejrzałem kilka plików z tego postu przepełnienia stosu (http://stackoverflow.com/questions/8886114/using-brew-with-ruby-1-9-2), ale nie mogę znaleźć odpowiedniej ścieżki do edycji. Jedyny istniejący plik, który istnieje, to mój plik / etc / profile, który obecnie wygląda następująco:

# 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

Chciałem po prostu odinstalować Pythona, a następnie zainstalować go ponownie za pośrednictwem Homebrew, ale trochę się denerwuję z powodu zepsucia zbyt wielu rzeczy na raz.

Czy istnieje prosty sposób na zmianę ścieżki? Czy powinienem utworzyć plik .bash_profile? Z góry dziękuję za wszelką pomoc.

threenovation
źródło

Odpowiedzi:

30

Tak, utwórz .bash_profileplik w swoim katalogu domowym zawierający

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

a następnie wykonaj jedną z poniższych czynności, aby aktywować zmianę

  • wykonać . ~/.bash_profile
  • wykonać PATH="/usr/local/bin:$PATH"w bieżącej powłoce
  • uruchom ponownie Terminal
Glenn Jackman
źródło
2
@threenovation, jeśli powyższa odpowiedź jest prawidłowa, czy mogę zasugerować, aby oznaczyć ją jako odpowiedź (kliknij znacznik obok odpowiedzi)
Stu Wilson
Zastanawiam się, czy należy to wyeksportować? Procesy potomne również powinny mieć tę nową ścieżkę. Ponadto: kiedy ustawiłem napar, nie powiadomiłem mnie, że / usr / bin pojawił się przed / usr / local / bin.
Steven Lu
@StevenLu, jest już wyeksportowany, zanim przejdziesz do .bash_profile. Nie zaszkodzi jednoznacznie wyeksportować go ponownie, ale nie jest to konieczne.
glenn jackman
Dzięki za to. Przepracowano „Twój system ma tendencję do zaparzania”.
Vezu
Wydaje mi się, że dostaję zduplikowane wpisy $PATH.
flow2k
10

Musisz zmienić / etc / paths, aby / usr / local / bin był wymieniony przed / usr / bin . Aby to zrobić, musisz sudo swojego edytora.

Jednym ze sposobów otwarcia edytora jest

 sudo open -t /etc/paths
Konstantin Spirin
źródło
Moja ŚCIEŻKA została poprawnie skonfigurowana w moim .bash_profile, ale nie w /etc/paths. To działało pięknie.
Nick Tomlin
7
NIE używaj tej metody do ustawiania ścieżki - istnieje ryzyko, że aplikacje nieterminalne będą pobierać „zaparzone” komponenty i ulegną awarii. Używanie „sudo” powinno być czerwoną flagą, chyba że naprawdę rozumiesz, co robisz (szczególnie w przypadku systemu programowania na poziomie użytkownika, takiego jak Mac Homebrew). Edycja pliku .bash_profile i ponowne uruchomienie terminala powinny wystarczyć.
rholmes
@rholmes Czy zmiany .bash_profiledotyczą tylko interaktywnych powłok użytkownika, a nie innych aplikacji?
flow2k
1
@ flow2k .bash_profile wpłynie na interaktywne powłoki użytkownika. Wszelkie wyeksportowane zmienne będą widoczne dla aplikacji uruchamianych z wiersza poleceń powłoki (na przykład uruchamianie „zwykłej” aplikacji Mac lub polecenia wiersza poleceń). Więcej szczegółów można znaleźć tutaj, ale robią one lepsze rozróżnienie niż to, o co prosiłeś: scriptingosx.com/2017/04/about-bash_profile-and-bashrc-on-macos Odpowiedź od glenn jackman .
rholmes,
1
@ flow2k tak, stwierdziłeś to poprawnie.
rholmes