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).

Odpowiedzi:



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.


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


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.


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();

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ę?


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


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.


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.


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ę.


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ć.

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.