PATH-Umgebungsvariable unter Mac OS X und / oder Eclipse

17

Wenn ich den Pfad in Bash ausdrucke, wird Folgendes ausgegeben:

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

Wenn ich System.out.println (System.getenv ("PATH")) ausführe; In Java, das unter Eclipse ausgeführt wird, wird gedruckt

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

Wie kann ich herausfinden, warum es diese Diskrepanz gibt? Ich muss / usr / local / bin zum PATH hinzufügen und es für Java-Apps unter Eclipse verfügbar machen. (Hinweis: Ich habe keine Änderungen an den Systempfaden vorgenommen. Dies sind also die Standardeinstellungen, die vom Betriebssystem oder möglicherweise von einer oder mehreren der von mir installierten Anwendungen festgelegt wurden.)

Jason S
quelle

Antworten:

9

Für diejenigen unter Ihnen, die Jahre später nach einer Antwort suchen (Neon, Sauerstoff):

Einige meiner Node- und Angular / Angular2-Tools in Eclipse sind aufgrund fehlender $ PATH-Einträge im MacOS-Terminal fehlgeschlagen. Ihre Werkzeuge verwenden wahrscheinlich das eingebettete Eclipse-Terminal, das Ihre Anmelde- / Benutzer-Shell nicht mehr bereitstellt. Daher müssen Sie das Eclipse-Terminal in Ihren Eclipse-Einstellungen so einstellen, dass es als --login-Shell gestartet wird, um die PATH-Einstellungen Ihrer Benutzer zu umfassen:

Gehe zu:

Preferences -> Terminal -> Local Terminal

und setzen

Arguments zu: --login

öffne ein neues Terminal in Eclipse und der $ PATH deines Benutzers sollte von nun an verwendet werden. Auch alles, was Sie in ~ / .bash_profile eingerichtet haben, wird beim Öffnen eines neuen Terminals in Eclipse ausgeführt.

Martin Peter
quelle
Beste Lösung, löst das Problem nur durch Ändern der Eclipse-Konfiguration in der GUI.
pXel
Diese Antwort brachte mich dazu, auf Sauerstoff umzusteigen, und das war alles, was ich brauchte, damit es funktionierte.
John
Ich habe nicht das Untermenü "Terminal" in Eclipse mit der Versionszeichenfolge "2019-06 (4.12.0)".
6.
8

Hatte das selbe Problem. Hier ist meine Lösung:

  1. Bearbeiten Sie die /etc/pathsDatei, um den gewünschten zusätzlichen Pfad einzuschließen.

  2. Führen Sie für eine OSX-Installation /Applications/eclipse/eclipse nicht aus /Applications/eclipse/Eclipse.app

user150161
quelle
1
Omg Nummer 2 hier war die Lösung für SO VIEL FRUSTRATION. Vielen Dank!!
Tommy
1
Ich habe mich auf dieser Website registriert, um diese Antwort zu verbessern - Punkt 2 hat sie behoben!
Iftah
Wo finde ich die etc / path?
John
1
@ John /etc/pathsist der vollständige Pfad der Datei. Sie können Cmd + Shift + G ausführen und dann "/ etc" eingeben und die Eingabetaste drücken. Sie müssen die Datei mit dem Namen "path" dort finden.
Sufian
6

Aha, ich habe diese Webseite gefunden, auf der steht

Hinweis: In Mac OS X ist / usr / local / bin nicht in seinem Standard-PATH enthalten. Angenommen, Sie verwenden die Standard-Bash-Shell, geben Sie export PATH = / usr / local / bin: $ PATH ein (oder fügen Sie sie in / etc / profile ein), bevor Sie eines dieser Tools verwenden.

Ist dies eine angemessene / unangemessene Maßnahme? Ich kann Systemdateien nur dann bearbeiten, wenn ich wirklich weiß, was ich tue. / usr / local / bin kann nur von root geschrieben werden, damit ich keine Sicherheitslücke öffne, oder?


Seltsamerweise habe ich den Exportpfad hinzugefügt und er hat keine Auswirkung auf die Eclipse-Ausführung über das Dock. Außerdem habe ich diese Seite über Pfade gefunden und meine Datei / etc / arrows hat

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

und doch werden diese Pfade in Eclipse nicht angezeigt ... gibt es eine einfache Möglichkeit, eine Binärdatei zu erstellen / zu finden, die $ PATH ausgibt, die ich vom Dock aus ausführen und so leichter debuggen kann? Ich weiß nicht, ob Eclipse mit dem Pfad rumspielt.

Jason S
quelle
2
+1 für Ihre letzte Frage. Ich frage mich, wie ich Pfadprobleme in OS X diagnostizieren kann, nicht in Bash oder im Terminal.
Fideli
Hinweis für zukünftige Googler: Apple nimmt jetzt den /usr/local/binersten Platz bei den Nutzern ein $PATH. (Siehe hier .)
Telemachus
4

Wenn Sie auf Eclipse sind (getestet mit "Mars"), können Sie Ihre "Run Configuration" ändern:

  1. Klicken Sie auf "Ausführen" → "Konfigurationen ausführen ..."
  2. Wählen Sie links die entsprechende Ausführungskonfiguration aus
  3. Wählen Sie nun den Reiter "Umgebung"
  4. Klicken Sie auf "Neu ..."
  5. Geben Sie im Feld "Name" "PATH" ein.
  6. Gehen Sie nun zu Ihrem Terminal, geben Sie "echo $ PATH" ein und kopieren Sie das Ergebnis
  7. Fügen Sie das Ergebnis in das Feld "Wert" ein
  8. Klicken Sie auf "OK"
  9. Stellen Sie sicher, dass Sie auf der Registerkarte "Umgebung" die Option "Umgebung an native Umgebung anhängen" auswählen.

Jetzt verwendet Eclipse dieselben Werte für die Umgebungsvariable PATH wie Ihr System. Denken Sie daran: Dies gilt nur für die von Ihnen ausgewählte Ausführungskonfiguration.

Wie bereits in Ihrer Frage erwähnt, überprüfen Sie Java mit:

System.getenv();
Mike
quelle
2

Höchstwahrscheinlich ändert sich eines Ihrer Bash-Anmeldeskripts ( .bashrcoder .bash_profile) $PATH. Wenn Sie Eclipse vom Terminal aus starten, gelangt es /usr/local/binin seinen Pfad?

derobert
quelle
1
guten anruf! Wenn ich Eclipse vom Terminal aus starte, enthält der Pfad / usr / local / bin. Was soll ich jetzt tun? Ist / usr / local / bin nicht etwas, das sich im Pfad zu allen Anwendungen befinden sollte? In welches Skript kann ich dies einfügen, sodass Eclipse im Finder oder im Dock im Pfad enthalten ist?
Jason S
1
Außerdem habe ich kein .bashrc- oder .bash_profil in meinem Benutzerverzeichnis.
Jason S
2

Dieser obige Tipp funktioniert für mich: 1) Füge Pfad zu / etc / routes als root hinzu 2) starte eclipse mit $ ECL_HOME / Eclipse.app / Contents / MacOS / eclipse anstelle von $ ECL_HOME / Eclipse.app

Kathy
quelle
Dieser hier funktioniert für mich, vielen Dank! In meinem Fall lautet der Pfad zum Ausführen von Eclipse /Applications/Eclipse.app/Contents/MacOS/eclipse
Tsung-Ting Kuo
2

Alternativ können Sie Ihrem /usr/localVerzeichnis auch einen symbolischen Link hinzufügen , der auf Ihre Anwendung verweist.

ZB wie folgt vorgehen root:

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

Dies half mir, die externe PhantomJS- Anwendung in einem Maven-Projekt in Eclipse auszuführen (mvn test) .

Dolch
quelle
Dies scheint nichts zu tun haben mit $PATHoder Verzeichnisse in $PATHwie /usr/local/bin. Könnten Sie das bitte näher erläutern?
Pabouk
Sie platzieren irgendwo im Pfad einen symbolischen Link, der auf die tatsächliche Position verweist, die sich nicht im Pfad befindet. Ich habe es schon einmal gemacht, es funktioniert für einzelne ausführbare Dateien, funktioniert nicht für ein Verzeichnis voller Dateien
Jason S
1

Eclipse - NEON, Mac OS X 10.11.6
Das Terminal in Eclipse nicht verwenden mvnBefehl. (I einen Soft - Link von mache mvnin /usr/local/bin)

Temporäre Lösung:

Rechtsklick /Applications/eclipse-> Paketinhalt anzeigen -> Inhalt -> MacOS -> Doppelklick eclipsezum Starten.

Starten Sie Eclipse auf diese Weise. Eclipse kann alle Pfadeinstellungen erkennen und anschließend den mvnBefehl im Eclipse-Terminal verwenden.

Sie können mit der rechten Maustaste eclipsein diesen Ordner klicken und einen Alias ​​erstellen, um ihn bequem zu starten.

Ich weiß nicht warum gerade jetzt. Ich denke, das sollte ein Finsternis-BUG sein.

blauer Pfeil
quelle
0

Bearbeiten Sie die ~/.bash_profile, um den Pfad aufzunehmen

anstatt im Launchpad zu starten,

öffne das Terminal und starte es als

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

Das hat den Trick für mich getan.

Vince C
quelle
0

Einige Antworten zusammenfassen und auf etwas Leichtes updaten:

  1. Klicken Sie mit der rechten Maustaste auf Eclipse.app und wählen Sie "Paketinhalt anzeigen".
  2. Navigieren Sie zu Contents / MacOS, um "Eclipse" zu finden.
  3. Klicken Sie mit der rechten Maustaste und wählen Sie "Make Alias" (Alias ​​erstellen), oder ziehen Sie es mit gedrückter Befehls- und Options-Taste und legen Sie es ab.
  4. Platzieren Sie den Alias ​​an einem geeigneten Ort, wie z. B. in Applications.
  5. Zum Starten doppelklicken.
  6. Es gibt keinen Schritt 6!

Dadurch wird nicht nur ein praktisches Terminalfenster geöffnet, in dem die unformatierte Eclipse-Ausgabe angezeigt wird, sondern es wird auch automatisch der Pfad übernommen, den Sie in Ihrer Anmeldeshell festgelegt haben.

Sie können also eine der normalen Methoden verwenden, um Ihren Pfad festzulegen (z. B. das Bearbeiten /etc/pathsoder ~/.bash_profileInstallieren eines Befehlszeilentools mit gutem Verhalten mbed), ohne sich weitere Sorgen machen zu müssen. Wenn Sie es vom Terminal aus aufrufen können, kann es auch von Eclipse aufgerufen werden.

Heath Raftery
quelle