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.

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

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.