Jak zresetować zmienną $ PATH w systemie Mac OS X?

17

Zmieniłem zmienną ścieżki, a teraz niektóre uruchamiane przeze mnie aplikacje zgłaszają błędy informujące o braku komendy (błąd 127) dla poleceń takich jak data i tryb uśpienia . Te polecenia działają dobrze, gdy są wykonywane bezpośrednio w powłoce.

Zgaduję, że ma to coś wspólnego ze zniekształconą zmienną $ PATH i muszę wiedzieć, jak ją zresetować. Usunąłem pliki ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc oraz ~ / .bashrc i ~ / .profile .

Jakie inne pliki mogą pomieścić moją $ PATH ? Czy istnieje prostszy sposób na zresetowanie ścieżki niż wkopanie w niezliczone pliki, które mogą zawierać moją ścieżkę?

Uwaga: ten problem ze ścieżką dotyczy tylko mojego użytkownika. Zrobiłem użytkownika testowego w moim systemie i ścieżka była w porządku, z powrotem do normalności.

AKTUALIZACJA: Dzięki. Nie wiem, który z usuniętych plików to zrobił, ale wszystko znów działa. Zrobiliście to, czego nie potrafili „eksperci”. I tak, Chris, miałeś rację. Dostosowania PATH, które wprowadziłem, były w bash_login. Ale jakoś zadziałało bez usuwania przeze mnie tych dostosowań. Myślę, że to mogło być, ponieważ korzystałem z tego przedpanu o nazwie „RCEnvironment” i wszedłem na ścieżkę z cytatami i: ŚCIEŻKA. Nie wiem, czy bierze cudzysłowy i nie zastępuje: $ PATH, więc to prawdopodobnie jest przyczyną błędu. Zapomniałem, że miałem nawet ten przedplat!

Neil
źródło
1
/ etc / profile jest najbardziej prawdopodobnym miejscem dla ustawień początkowych wartości PATH, ale coś tam wpłynęłoby na wszystkich użytkowników. Jest też ~ / .bash_login, którego nie wymieniłeś (choć być może już go wyeliminowałeś).
Chris Johnsen

Odpowiedzi:

19

Jeśli masz plik ~ / .MacOSX / environment.plist, sprawdź, czy zawiera on domyślną wartość ŚCIEŻKI.

Jeśli jest w formacie XML (listy mogą być w wielu formatach), możesz edytować w dowolnym edytorze tekstu. Sprawdź to, plutil -lint ~/.MacOSX/environment.plistjeśli edytujesz go ręcznie.

Lub możesz użyć poleceń takich jak defaults lub PlistBuddy, aby wprowadzić kontrolowane modyfikacje plików plist w formacie XML lub binarnym.


Zawsze możesz ustawić własną ŚCIEŻKĘ w dowolnym pliku inicjującym powłokę.

Umieść coś takiego jak poniżej w plikach startowych powłoki ( .bashrclub .bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

To zastąpi domyślną ŚCIEŻKĘ ustawioną podczas uruchamiania powłoki (pierwsza PATH=nie używa $PATH, więc zawsze zacznie się od tego, co dasz).

Tylko nigdy nie będzie używany przez jeden z plików „login” (pierwszy, że istnieje i jest czytelny z ~/.bash_profile, ~/.bash_logini ~/.profilebędzie używany). .profilejest dla wstecznej kompatybilności z innymi powłokami - jeśli go używasz, pamiętaj, aby był wolny od składni specyficznej dla bash . Jeśli wybierzesz opcję .bash_loginlub .bash_profile(są funkcjonalnie równoważne, z wyjątkiem nazw), użyj linii podobnej [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]do górnej, aby powłoki logowania otrzymały również dostosowania wprowadzone w twoim pliku .bashrc.

Jeśli chcesz, aby wszystkie wystąpienia bash miały tę samą ŚCIEŻKĘ, użyj .bashrc. Jeśli często interaktywnie modyfikujesz ŚCIEŻKĘ pojedynczej powłoki z wiersza poleceń i chcesz używać tej zmodyfikowanej ŚCIEŻKI w podpowłokach (przypadki, które prawdopodobnie nie są strasznie częste), powinieneś zamiast tego umieścić instrukcje w jednym z plików „login” . Wybierz tylko jeden z plików logowania i użyj go.

Chris Johnsen
źródło
8

1. Otwórz terminal

2. Najpierw możesz po prostu sprawdzić swój bieżący $PATHtyp

echo $ PATH

do terminalu

3.Jeśli $PATHterminal, który zwrócił, jest ścieżką, którą chcesz, to jesteś dobry; jeśli nie, wpisz

export PATH = / usr / bin: / bin: / usr / sbin: / sbin

, a następnie wpisz

dotknij ~ / .bash_profile

, a następnie wpisz

otwórz ~ / .bash_profile

, zobaczysz otwarty EditText, teraz wpisz ścieżkę, którą chcesz w tym EditText; Na przykład wpisz

ŚCIEŻKA = / usr / bin: / bin: / usr / sbin: / sbin

(co jest domyślnym ustawieniem $PATHdla systemu Mac, biorąc pod uwagę, że chcesz go zresetować, $PATHwięc prawdopodobnie powinieneś to wpisać), zapisz go, a następnie zamknij EditText, a następnie zamknij Terminal.

4.Teraz zmieniłeś już $PATHlub przywróciłeś domyślne ustawienia Maca $PATH!

RObOtAndChalie
źródło
2
Czuję, że jest wiele powyżej, które nie mają żadnego efektu. Jak myślisz, dlaczego touchjest to wymagane? Ponadto, skoro i tak zamykasz Terminal, po co uruchamiać exportwiersz poleceń, a nie tylko dodawać go do ~/.bash_profile(który exportteż potrzebuje ) i robić to? (Alternatywnie, uruchom, source ~/.bash_profileaby zastosować zmiany do bieżącego okna.)
Arjan
To prawda, że ​​niektóre z nich są zbędne. Zapisanie dowolnej wartości PATH do .bash_profile powinno zrobić.
ThinkCode
1

rc/profilePokazane zmiany Chrisa Johnsona również działają dobrze /etc/profile.

Właśnie dołączyłem:

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

do mojego /etc/profilepliku w systemie Mac OS X 10.9 Mavericks, aby dokończyć instalację MariaDB (która działa jako świetny zamiennik MySQL).

zigmoo
źródło