Zmienna PATH env w Mac OS X i / lub Eclipse

17

Kiedy wypisuję ścieżkę w bash, drukuje to:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Kiedy uruchamiam System.out.println (System.getenv („PATH”)); w Javie działającej pod Eclipse, drukuje

/usr/bin:/bin:/usr/sbin:/sbin

Jak mogę dowiedzieć się, dlaczego występuje taka rozbieżność? Muszę dodać / usr / local / bin do PATH i udostępnić go aplikacjom Java pod Eclipse. (uwaga: nie wprowadziłem żadnych modyfikacji ścieżek systemowych, więc są to ustawienia domyślne ustawione przez system operacyjny lub być może jedną lub więcej zainstalowanych aplikacji).

Jason S.
źródło

Odpowiedzi:

10

Jeśli chcesz ustawić zmienną systemową w całym systemie OSX, musisz umieścić ją w pliku ~ / .MacOSX / environment.plist.

Zobacz tę stronę w witrynie Apple, aby uzyskać więcej szczegółów.

Ted Naleid
źródło
1
Niestety nie wydaje mi się to działać.
thSoft,
9

Dla tych, którzy szukają odpowiedzi po latach (Neon, Tlen):

Niektóre narzędzia mojego węzła i narzędzia kątowe / kątowe2 w środowisku Eclipse zawiodły z powodu braku wpisów $ PATH w terminalu MacOS. Twoje oprzyrządowanie prawdopodobnie wykorzystuje wbudowany terminal eclipse, który nie zaczyna zapewniać powłoki logowania / użytkownika. Musisz więc ustawić terminal zaćmienia w swoich preferencjach zaćmienia, aby zaczynał jako powłoka --login w celu uwzględnienia ustawień PATH użytkowników:

Iść do:

Preferences -> Terminal -> Local Terminal

i nastaw

Arguments do: --login

otwórz nowy Terminal w Eclipse, a odtąd $ PATH użytkownika powinna być używana. Również wszystko, co skonfigurowałeś w ~ / .bash_profile, będzie działać podczas otwierania nowego terminala w Eclipse.

Martin Peter
źródło
Najlepsze rozwiązanie, rozwiązuje problem po prostu zmieniając konfigurację zaćmienia w GUI.
pXel
Ta odpowiedź zmusiła mnie do przejścia na Oxygen i to było wszystko, czego potrzebowałem, aby działało.
Jan
Nie mam podmenu „Terminal” w Eclipse z ciągiem wersji „2019-06 (4.12.0)”.
tsj
8

Miałem ten sam problem. Oto moje rozwiązanie:

  1. Edytuj /etc/pathsplik, aby uwzględnić żądaną dodatkową ścieżkę.

  2. W przypadku instalacji OSX nie uruchamiaj/Applications/eclipse/eclipse /Applications/eclipse/Eclipse.app

użytkownik150161
źródło
1
omg numer 2 tutaj był rozwiązaniem TAK DUŻO OWOCÓW. Dzięki!!
Tommy
1
Zarejestrowałem się na tej stronie, aby móc głosować za odpowiedzią - punkt 2 to naprawił!
Iftah
Gdzie mogę znaleźć ścieżki / etc?
Jan
1
@John /etc/pathsto pełna ścieżka do pliku. Możesz zrobić Cmd + Shift + G, a następnie wstawić „/ etc” i nacisnąć enter / return. Musisz tam znaleźć plik o nazwie „ścieżki”.
Sufian
6

Aha, znalazłem tę stronę, która mówi

Uwaga: Mac OS X nie zawiera / usr / local / bin w domyślnej ŚCIEŻCE. Dlatego zakładając, że używasz domyślnej powłoki bash, przed użyciem któregokolwiek z tych narzędzi wpisz (lub dołącz do / etc / profile) export PATH = / usr / local / bin: $ PATH.

Czy jest to właściwa / nieodpowiednia rzecz do zrobienia? Nie potrafię edytować plików systemowych, chyba że naprawdę wiem, co robię. / usr / local / bin można zapisać tylko przez root, więc nie otworzyłbym dziury w zabezpieczeniach, prawda?


Dziwne, dodałem ścieżkę eksportu i nie ma to wpływu na zaćmienie uruchamiane z Docka. Znalazłem też tę stronę o ścieżkach i mój plik / etc / paths ma

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

a jednak te ścieżki nie pokazują się w zaćmieniu ... czy istnieje prosty sposób na utworzenie / znalezienie pliku binarnego, który wypisuje $ PATH, który mógłbym uruchomić z Docka, aby łatwiej było to debugować? Nie wiem, czy Eclipse kręci się wokół ścieżki.

Jason S.
źródło
2
+1 za ostatnie pytanie. Zastanawiam się, jak diagnozować problemy ze ścieżką w systemie OS X, a nie w bash ani terminalu.
fideli
Uwaga dla przyszłych pracowników Google: Apple obejmuje teraz /usr/local/binużytkowników $PATH. (Zobacz tutaj .)
Telemachus
4

Jeśli korzystasz z Eclipse (testowany z „Mars”), możesz zmienić „Uruchom konfigurację”:

  1. Kliknij „Uruchom” → „Uruchom konfiguracje ...”
  2. Wybierz odpowiednią konfigurację uruchamiania po lewej stronie
  3. Teraz wybierz zakładkę „Środowisko”
  4. Kliknij „Nowy ...”
  5. W polu „Nazwa” wpisz „ŚCIEŻKA”
  6. Teraz przejdź do terminala, wpisz „echo $ PATH” i skopiuj wynik
  7. Wklej wynik do pola „Wartość”
  8. Kliknij „OK”
  9. Wróć na karcie „Środowisko” i wybierz „Dołącz środowisko do środowiska macierzystego”

Teraz Eclipse używa tych samych wartości zmiennej środowiskowej PATH, co twój system. Pamiętaj: dotyczy to tylko wybranej konfiguracji uruchamiania.

Jak już wspomniano w pytaniu, sprawdź w Javie za pomocą:

System.getenv();
Mikrofon
źródło
2

Najprawdopodobniej jeden ze skryptów logowania bash ( .bashrclub .bash_profile) się zmienia $PATH. Jeśli uruchomisz Eclipse z terminala, czy wejdzie on /usr/local/binna swoją ścieżkę?

derobert
źródło
1
dobra decyzja! Jeśli uruchomię Eclipse z terminala, na ścieżce znajduje się / usr / local / bin. Co mam teraz zrobić? Czy / usr / local / bin nie jest czymś, co powinno znajdować się na ścieżce do wszystkich aplikacji? w którym skrypcie mogę to umieścić, aby jeśli uruchomię Eclipse z Findera lub Docka, znajdzie się na ścieżce?
Jason S
1
Również nie mam .bashrc lub .bash_profile w moim katalogu użytkownika.
Jason S
2

Ta wskazówka powyżej działa dla mnie: 1) dodaj ścieżkę do / etc / paths jako root 2) uruchom eclipse za pomocą $ ECL_HOME / Eclipse.app / Contents / MacOS / eclipse zamiast $ ECL_HOME / Eclipse.app

Kathy
źródło
Ten działa dla mnie, dziękuję bardzo! W moim przypadku ścieżka do uruchomienia Eclipse to /Applications/Eclipse.app/Contents/MacOS/eclipse
Tsung-Ting Kuo
2

Alternatywnie możesz po prostu dodać symboliczny link do /usr/localkatalogu wskazujący na twoją aplikację.

Np. Wykonaj jako root:

ln -s /Applications/PhantomJS/phantomjs-1.9.2-macosx/bin/phantomjs / usr / local / phantomjs

Pomogło mi to uruchomić (test mvn) zewnętrzną aplikację PhantomJS z projektu Maven w Eclipse.

sztylet
źródło
Wydaje się, że nie ma to nic wspólnego z podobnymi $PATHkatalogami . Czy możesz wyjaśnić bardziej szczegółowo? $PATH/usr/local/bin
pabouk
gdzieś na ścieżce umieścisz dowiązanie symboliczne, które wskazuje rzeczywistą lokalizację, której nie ma na ścieżce. Zrobiłem to wcześniej, działa dla pojedynczych plików wykonywalnych, nie działa dla katalogu pełnego plików
Jason S
1

Eclipse NEON, Mac OS X 10.11.6
Terminal w Eclipse nie można użyć mvnpolecenia. (I zrobić jeden miękki ogniwo mvnw /usr/local/bin)

Rozwiązanie tymczasowe:

Kliknij prawym przyciskiem myszy /Applications/eclipse-> pokaż zawartość pakietu -> zawartość -> MacOS -> kliknij dwukrotnie, eclipseaby rozpocząć.

Uruchom Eclipse w ten sposób, Eclipse może wykryć wszystkie ustawienia ścieżki, a następnie mogę teraz użyć mvnpolecenia w terminalu Eclipse.

Możesz kliknąć prawym przyciskiem myszy eclipseten folder i utworzyć alias, aby wygodnie go uruchomić.

Nie wiem dlaczego teraz. Myślę, że to powinien być jeden BŁĄD zaćmienia.

niebieska strzała
źródło
0

edytuj, ~/.bash_profileaby uwzględnić ścieżkę

zamiast uruchamiać się w starterze,

otwórz terminal i uruchom go jako

/Applications/Eclipse.app/Contents/MacOS/eclipse

To załatwiło sprawę.

Vince C.
źródło
0

Łącząc kilka odpowiedzi i aktualizując do czegoś łatwego:

  1. Kliknij prawym przyciskiem myszy Eclipse.app i wybierz „Pokaż zawartość opakowania”
  2. Przejdź do Contents / MacOS, aby znaleźć „eclipse”.
  3. Kliknij prawym przyciskiem myszy i wybierz „Utwórz alias” lub przeciągnij i upuść, przytrzymując polecenie i opcję.
  4. Umieść alias w dogodnym miejscu, na przykład w aplikacji.
  5. Kliknij dwukrotnie, aby uruchomić.
  6. Nie ma kroku 6!

To nie tylko otworzy poręczne okno terminala pokazujące nieprzetworzone dane wyjściowe Eclipse, ale także automatycznie przyjmie ścieżkę ustawioną w powłoce logowania.

Tak więc można użyć dowolnego z normalnych metod, aby ustawić ścieżkę (edytowanie /etc/pathslub ~/.bash_profileczy po prostu zainstalowanie dobrze zachowujący się jak narzędzie wiersza polecenia mbed), a martwić się dalej. Jeśli możesz zadzwonić z terminala, Eclipse może to również wywołać.

Heath Raftery
źródło