Zugriff auf die Unix-Umgebung von Emacs und Cocoa-Apps in OS X Mountain Lion

1073
FCo

Ich benutze Emacs auf meinem Mac, ich installiere die Cocoa-Version von Emacs mit Homebrew. Ein Problem ist, dass ich, um den "Unix-Pfad" zu sehen, meinen Pfad von .profilenach replizieren musste.MacOSX/environment.plist

Ich mache es damit in meinem .profile:

# PATH for emacs and cocoa apps /etc/profile begin if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` defaults write $HOME/.MacOSX/environment PATH "$PATH" fi 

Und das hat früher funktioniert, aber als ich Mountain Lion installierte, funktionierte es nicht mehr. Ich kann keine Bedienungsanleitung finden, die besagt, dass sie in dieser Version geändert wurde.

Weiß jemand, wie man den Unix-Pfad von Kakaoanwendungen auf Mountain Lion sieht?

5
Hm, IIRC hatten sie vor langer Zeit geplant, "environment.plist" abzulehnen. Sie können versuchen, stattdessen `/ etc / launchd.conf` oder` launchctl setenv` zu verwenden, aber Ihre Laufleistung kann variieren. Ich werde das morgen überprüfen. slhck vor 11 Jahren 1
Oh danke! Anscheinend wurde die .MacOSX / -Umgebung-Datei nicht mehr empfohlen (es wäre schön, wenn Apple einen schönen Artikel hätte, der die Situation erklärt und was stattdessen zu tun ist. Ich habe den Code in .profile durch `launchctl setenv PATH $ PATH` ersetzt und er funktioniert, aber ich muss alle Änderungen im Pfad neu starten. FCo vor 11 Jahren 0

1 Antwort auf die Frage

4
slhck

Um diese Frage formell zu beantworten: Es könnte sein, dass .MacOSX/environment.plistdas nicht mehr (?) Oder zumindest nicht zuverlässig funktioniert. Für Apps, die von Spotlight gestartet wurden, hat es nie funktioniert. Es ist jedoch dokumentiert: Richtlinien für die Laufzeitkonfiguration: Umgebungsvariablen

Die Alternative dazu ist die Verwendung von launchctlUmgebungsvariablen für GUI-Apps. Dies kopiert beispielsweise Ihre Shell PATHin die Umgebung:

launchctl setenv PATH $PATH 

Bei Änderungen $PATHmüssen Sie die betroffenen Apps neu starten. Sie müssen keinen Neustart durchführen, wenn Sie die obige Syntax verwenden. Wenn Sie sich jedoch ändern /etc/launchd.conf, müssen Sie einen Neustart durchführen. Siehe auch: Umgebungsvariablen in OS X einstellen? - Paketüberfluss

Es funktioniert nicht wirklich! Ich verstehe nicht Manchmal tut es das und manchmal nicht. `launchctl getenv PATH` aus einer Emacs-Shell gibt das Richtige zurück, aber 'echo $ PATH` hat den falschen Pfad !. Im Moment mache ich `(setenv" PATH "(Shell-Befehl-zu-Zeichenfolge" launchctl getenv PATH "))" am Anfang der `.emacs'-Datei, aber es ist ein Hack! FCo vor 11 Jahren 1
Hm. Ich habe noch nie die Cocoa-Emacs verwendet, und die `.MacOSX`-Version hat für mich immer funktioniert, zumindest bis 10.6 (und ich habe sie danach nicht gebraucht). Vielleicht können Sie Ihre Frage mit Ihrem aktuellen Status aktualisieren - insbesondere mit emacs - und andere können einen Blick darauf werfen. slhck vor 11 Jahren 0