it-swarm.com.de

Festlegen von Umgebungsvariablen unter Mac OS X Lion

Wenn jemand sagt "bearbeite deine .plist-Datei" oder "dein .profile" oder ".bash_profile" usw., verwirrt mich das nur. Ich habe keine Ahnung, wo sich diese Dateien befinden, wie sie erstellt werden, wenn ich das tun muss usw. und warum es so viele verschiedene Dateien zu geben scheint (warum? Tun sie verschiedene Dinge?)

Könnte also jemand einem früheren Windows-Benutzer bitte sehr geduldig erklären (der unbedingt die angenehme, wenn auch anfangs etwas verwirrende OS X-Welt kennenlernen möchte), wie dies Schritt für Schritt zu tun ist?

Ich muss die Variablen sowohl für GUI-Anwendungen als auch für Befehlszeilenanwendungen festlegen, und im Moment ist es für ein Ant-Skript, das die Variablen benötigt, aber es wird höchstwahrscheinlich auch andere Anforderungen geben.

Bitte beachten Sie, dass ich auch Lion habe, da viele der Antworten, die Sie auf Google erhalten, für Lion veraltet zu sein scheinen ...

Beachten Sie auch, dass ich praktisch keine Erfahrung mit dem Terminal habe. Ich bin bereit zu lernen, aber bitte erklären Sie für einen Neuling ...

521
Anders

Zuallererst ist zu erkennen, dass OS X auf Unix basiert. Hier kommt das .bash_profile ins Spiel. Wenn Sie die Terminal-App in OS X starten, erhalten Sie standardmäßig eine Bash-Shell. Die Bash-Shell stammt von Unix und führt beim Laden das Skript .bash_profile aus. Sie können dieses Skript so ändern, dass Ihr Benutzer Ihre Einstellungen ändert. Diese Datei befindet sich unter:

~/.bash_profile

Update für Mavericks

OS X Mavericks verwendet die environment.plist nicht - zumindest nicht für OS X-Windows-Anwendungen. Sie können launchd configuration für Anwendungen mit Fenstern verwenden. Das .bash_profile wird weiterhin unterstützt, da es Teil der in Terminal verwendeten Bash-Shell ist.

Nur Löwe und Berglöwe

Anwendungen mit OS X-Fenstern erhalten Umgebungsvariablen aus der Datei "environment.plist". Dies ist wahrscheinlich, was Sie mit der ".plist" -Datei meinen. Diese Datei befindet sich unter:

~/.MacOSX/environment.plist

Wenn Sie die Datei environment.plist ändern, werden diese Umgebungsvariablen in OS X-Windows-Anwendungen, einschließlich der Terminal-App, festgelegt. Jede Umgebungsvariable, die Sie in Ihrem .bash_profile festgelegt haben, wirkt sich nur auf Ihre Bash-Shells aus.

Im Allgemeinen setze ich nur Variablen in meiner .bash_profile-Datei und ändere die .plist-Datei (oder die launchd-Datei bei Mavericks) nicht. Die meisten Anwendungen mit OS X-Fenstern benötigen keine benutzerdefinierte Umgebung. Nur wenn eine Anwendung tatsächlich eine bestimmte Umgebungsvariable benötigt, ändere ich die Datei environment.plist (oder launchd auf Mavericks).

Es hört sich so an, als ob Sie die Datei environment.plist und nicht die Datei .bash_profile ändern möchten.

Eine letzte Sache, wenn Sie nach diesen Dateien suchen, denke ich, dass Sie sie nicht finden werden. Wenn ich mich richtig erinnere, befanden sie sich nicht bei meiner Erstinstallation von Lion.

Bearbeiten: Hier einige Anweisungen zum Erstellen einer Plist-Datei.

  1. Öffne Xcode
  2. Wählen Sie Datei -> Neu -> Neue Datei ...
  3. Wählen Sie unter Mac OS X Ressourcen
  4. Wählen Sie eine Plist-Datei
  5. Folgen Sie den weiteren Anweisungen

Um die Datei zu bearbeiten, können Sie bei gedrückter Ctrl-Taste auf ein Menü klicken und Zeile hinzufügen auswählen. Sie können dann ein Schlüsselwertpaar hinzufügen. Bei Umgebungsvariablen ist der Schlüssel der Name der Umgebungsvariablen und der Wert der tatsächliche Wert für diese Umgebungsvariable.

Sobald die plist-Datei erstellt ist, können Sie sie mit Xcode öffnen und jederzeit ändern.

397
David V

Ihr .profile oder .bash_profile sind einfach Dateien, die in Ihrem "Home" -Ordner vorhanden sind. Wenn Sie ein Finder-Fenster öffnen und im Bereich Favoriten auf Ihren Kontonamen klicken, werden diese nicht angezeigt. Wenn Sie ein Terminalfenster öffnen und ls eingeben, um die Dateien aufzulisten, werden sie immer noch nicht angezeigt. Sie können sie jedoch mithilfe von ls -a im Terminal finden. Oder wenn Sie Ihren bevorzugten Texteditor öffnen (sagen Sie TextEdit, da es mit OS X geliefert wird) und Datei-> Öffnen wählen und dann drücken Command+Shift+. und klicken Sie auf Ihren Kontonamen (Home-Ordner), um diese ebenfalls anzuzeigen. Wenn Sie sie nicht sehen, können Sie sie in Ihrem bevorzugten Texteditor erstellen.

Das Hinzufügen von Umgebungsvariablen ist jetzt relativ einfach und Windows konzeptionell bemerkenswert ähnlich. Fügen Sie in Ihrem .profile einfach einen pro Zeile den Variablennamen und seinen Wert wie folgt hinzu:

export Java_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

usw.

Wenn Sie Ihre Variable "PATH" ändern, müssen Sie den Standard-PATH des Systems angeben, der bereits für Sie festgelegt wurde:

export PATH=$PATH:/path/to/my/stuff

Hier ist der eigentümliche Teil: Sie können entweder ein neues Terminalfenster öffnen, damit die neuen Variablen wirksam werden, oder Sie müssen .profile oder .bash_profile eingeben, um die Datei neu zu laden und den Inhalt anzuwenden an die Umgebung Ihres aktuellen Terminals.

Sie können überprüfen, ob Ihre Änderungen wirksam wurden, indem Sie den Befehl "set" in Ihrem Terminal verwenden. Geben Sie einfach set (oder set | more, wenn Sie eine paginierte Liste bevorzugen) ein und stellen Sie sicher, dass das, was Sie der Datei hinzugefügt haben, vorhanden ist.

Das Hinzufügen von Umgebungsvariablen zu GUI-Apps ist normalerweise nicht erforderlich, und ich würde gerne mehr darüber erfahren, was Sie konkret tun möchten, um Ihnen eine bessere Antwort darauf zu geben.

219
tokkov

Im Folgenden finden Sie weitere Informationen zur PATH-Variablen in Lion OS 10.7.x:

Wenn Sie den PATH global festlegen müssen, wird der PATH vom System in der folgenden Reihenfolge erstellt:

  1. Analysieren des Inhalts der Datei /private/etc/paths, ein Pfad pro Zeile
  2. Analysieren des Inhalts des Ordners /private/etc/paths.d. Jede Datei in diesem Ordner kann mehrere Pfade enthalten, einen Pfad pro Zeile. Die Ladereihenfolge wird zuerst durch den Dateinamen und dann durch die Reihenfolge der Zeilen in der Datei bestimmt.
  3. Eine setenv PATH -Anweisung in /private/etc/launchd.conf, die diesen Pfad an den bereits in # 1 und # 2 (Ihnen) erstellten Pfad anfügt darf nicht mit $ PATH auf die bisher erstellte PATH-Variable verweisen). Bei den beiden anderen Optionen ist es jedoch völlig unnötig, den PATH hier festzulegen, obwohl hier andere globale Umgebungsvariablen für alle Benutzer festgelegt werden können.

Diese Pfade und Variablen werden von allen Benutzern und Anwendungen geerbt. Sie sind also wirklich global. Durch Abmelden und Anmelden werden diese Pfade nicht zurückgesetzt. Sie sind für das System erstellt und werden erstellt, bevor einem Benutzer die Möglichkeit zur Anmeldung gegeben wird. Änderungen an diesen erfordern einen Neustart des Systems, damit sie wirksam werden.

Übrigens, eine Neuinstallation von OS 10.7.x Lion hat keinen environment.plist, den ich finden kann, so dass es möglicherweise funktioniert, aber möglicherweise auch veraltet ist.

76
jonphipps
echo $PATH

gibt den aktuellen Pfadwert aus

Dann mache vim ~/.bash_profile und schreibe

export PATH=$PATH:/new/path/to/be/added

hier hängen Sie an den alten Pfad an, behalten also den alten Pfad bei und fügen Ihren neuen Pfad hinzu

dann mach

source ~/.bash_profile

dadurch wird es ausgeführt und der Pfad hinzugefügt

dann nochmal mit checken

echo $PATH
50
learner_19

Leider löste keine dieser Antworten das spezifische Problem, das ich hatte.

Hier ist eine einfache Lösung, ohne sich mit bash anlegen zu müssen. In meinem Fall wurde gradle aktiviert (für Android Studio).

Übrigens: Diese Schritte beziehen sich auf OSX (Mountain Lion 10.8.5).

  • Öffnen Sie das Terminal.
  • Führen Sie den folgenden Befehl aus:

    Sudo nano /etc/paths (oder Sudo vim /etc/paths für vim)

    nano

  • Gehen Sie zum Ende der Datei und geben Sie den Pfad ein, den Sie hinzufügen möchten.
  • Drücke Strg-x, um zu beenden.
  • Geben Sie 'Y' ein, um den geänderten Puffer zu speichern.
  • Öffnen Sie ein neues Terminalfenster und geben Sie Folgendes ein:

    echo $PATH

Sie sollten den neuen Pfad sehen, der an das Ende des PFADES angehängt wird

Ich habe diese Details aus diesem Beitrag erhalten:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

Ich hoffe das kann jemand anderem helfen

30
wired00

Vereinfachte Erklärung

Dieser Beitrag/diese Frage ist etwas alt, daher beantworte ich eine vereinfachte Version für Benutzer von OS X Lion. Standardmäßig verfügt OSX Lion über keine der folgenden Dateien:

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile

Wenn Sie im Terminal etwas getan haben, wird möglicherweise ~/.bash_history angezeigt

Was es bedeutet

Sie müssen die Datei erstellen, um Ihre Standard-Bash-Befehle festzulegen (normalerweise in ~/.bashrc). Verwenden Sie dazu einen beliebigen Editor, obwohl dies im Terminal einfacher ist:

  1. %> emacs .profile
  2. [von w/in emacs Typ:] source ~/.bashrc
  3. [from w/in emacs type:] Ctrl + x Ctrl + s (um die Datei zu speichern)
  4. [from w/in emacs type:] Ctrl + x Ctrl + c (um Emacs zu schließen)
  5. %> emacs .bashrc
  6. [von w/in emacs tippe/füge alle deine bash Befehle ein, speichere und beende]

Wenn Sie das Terminal das nächste Mal beenden und neu laden, sollten alle Ihre Bash-Einstellungen geladen werden. Aus gutem Grund ist es normalerweise eine gute Idee, Ihre Befehle in nützliche Dateinamen zu unterteilen. Zum Beispiel sollten Sie in ~/.bashrc einen source ~/.bash_aliases haben und alle Ihre Alias-Befehle in ~/.bash_aliases ablegen.

23
vol7ron

Für mich hat es funktioniert, einen .launchd.conf mit den Variablen zu erstellen, die ich brauchte:

setenv FOO barbaz

Diese Datei wird beim Login von launchd gelesen. Sie können eine Variable 'on the fly' zum ausgeführten launchd hinzufügen, indem Sie Folgendes verwenden:

launchctl setenv FOO barbaz`

Tatsächlich enthält .launchd.cond einfach launchctl-Befehle.

Auf diese Weise festgelegte Variablen scheinen in GUI-Anwendungen ordnungsgemäß vorhanden zu sein.

Wenn Sie zufällig versuchen, Ihre LANG- oder LC_-Variablen auf diese Weise festzulegen, und iTerm2 verwenden, deaktivieren Sie die Einstellung "Ländervariablen automatisch festlegen" auf der Registerkarte "Terminal" des von Ihnen verwendeten Profils. Das scheint die Umgebungsvariablen von launchd außer Kraft zu setzen, und in meinem Fall wurde ein fehlerhafter LC_CTYPE gesetzt, was Probleme auf Remote-Servern verursachte (die die Variable bestanden haben).

(Die environment.plist funktioniert auf meinem Lion anscheinend immer noch. Sie können den Einstellungsbereich RCenvironment verwenden, um die Datei zu verwalten, anstatt sie manuell zu bearbeiten oder den erforderlichen Xcode zu verwenden. Sie funktioniert anscheinend immer noch auf Lion, obwohl dies der Fall ist Das letzte Update stammt aus der Snow Leopard-Ära und ist meine persönlich bevorzugte Methode.)

18
Gilimanjaro

Richten Sie Ihre PATH-Umgebungsvariable unter Mac OS ein

Öffnen Sie das Terminal-Programm (dieses befindet sich standardmäßig in Ihrem Ordner Applications/Utilites). Führen Sie den folgenden Befehl aus

touch ~/.bash_profile; open ~/.bash_profile

Dadurch wird die Datei in Ihrem Standardtexteditor geöffnet.

Für Android SDK als Beispiel:

Sie müssen den Pfad zu Ihrem Android SDK-Plattform-Tools- und Tools-Verzeichnis hinzufügen. In meinem Beispiel verwende ich "/ Development/Android-sdk-macosx" als Verzeichnis, in dem das SDK installiert ist. Fügen Sie die folgende Zeile hinzu:

export PATH=${PATH}:/Development/Android-sdk-macosx/platform-tools:/Development/Android-sdk-macosx/tools

Speichern Sie die Datei und beenden Sie den Texteditor. Führen Sie Ihr .bash_profile aus, um Ihren PATH zu aktualisieren.

source ~/.bash_profile

Jedes Mal, wenn Sie das Terminal-Programm öffnen, enthält PATH das SDK Android.

14
Charaf JRA

Hinzufügen von Pfadvariablen zu OS X Lion

Dies war ziemlich einfach und funktionierte für mich im Terminal:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash Shell

Eine ähnliche Antwort war hier: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

11
Yaw Joseph Etse

Offenes Terminal:

vi ~/.bash_profile

Übernehmen des Systemwechsels (kein Neustart des Computers erforderlich):

source ~/.bash_profile

(Funktioniert auch mit macOS Sierra 10.12.1)

7
D Vy

Lassen Sie mich Sie von meinem persönlichen Beispiel auf eine sehr überflüssige Weise veranschaulichen.

  1. Stellen Sie zunächst nach der Installation von JDK sicher, dass es installiert ist. enter image description here
  2. Manchmal richtet macOS oder Linux im Gegensatz zu Windows automatisch Umgebungsvariablen für Sie ein. Das ist aber nicht immer der Fall. Also lasst es uns überprüfen. enter image description here Die Zeile unmittelbar nach echo $ Java_HOME wäre leer, wenn die Umgebungsvariable nicht gesetzt ist. Es muss in Ihrem Fall leer sein.

  3. Jetzt müssen wir prüfen, ob wir die Datei bash_profile haben. enter image description here Du hast gesehen, dass wir in meinem Fall bereits bash_profile haben. Wenn nicht, müssen wir eine bash_profile-Datei erstellen.

  4. Erstellen Sie eine bash_profile-Datei. enter image description here

  5. Überprüfen Sie erneut, ob die Datei bash_profile vorhanden ist. enter image description here

  6. Öffnen wir nun die Datei bash_profile. macOS öffnet es mit seinem Standardprogramm TextEdit. enter image description here

  7. Dies ist die Datei, in der Umgebungsvariablen gespeichert werden. Wenn Sie eine neue Datei bash_profile geöffnet haben, muss diese leer sein. In meinem Fall war es bereits für die Programmiersprache python und die Anaconda-Distribution eingestellt. Jetzt muss ich Umgebungsvariable für Java hinzufügen, das gerade die erste Zeile hinzufügt. SIE MÜSSEN die erste Zeile VERBATIM TYPEN. NUR die erste Zeile. Speichern und schließen Sie das TextEdit. Schließen Sie dann das Terminal. enter image description here

  8. Öffnen Sie das Terminal erneut. Lassen Sie uns überprüfen, ob die Umgebungsvariable eingerichtet ist. enter image description here

5
Sumit Pokhrel

Ich hatte ein Problem mit Eclipse (gestartet als GUI, nicht vom Skript) auf Maverics, dass es keinen benutzerdefinierten PATH nahm. Ich habe alle oben genannten Methoden ohne Erfolg ausprobiert. Schließlich fand ich die einfachste funktionierende Antwort basierend auf Hinweisen von hier :

  1. Wechseln Sie zum Ordner /Applications/Eclipse/Eclipse.app/Contents

  2. Bearbeiten Sie die Datei Info.plist mit dem Texteditor (oder XCode) und fügen Sie ein LSEnvironment -Wörterbuch für die Umgebungsvariable mit vollständigem Pfad . Beachten Sie, dass es auch/usr/bin usw. enthält:

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/Android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
  3. Parameter für App neu laden mit

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/Eclipse/Eclipse.app
    
  4. Starten Sie Eclipse neu

5
JaakL

Ich bin den idiotischen Weg gegangen. Diese wurden am Ende von/etc/profile hinzugefügt

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

erstellte einen Ordner/etc/surroundings Erstelle eine Datei mit dem Namen "Oracle" oder "whatever" und fügte das Zeug hinzu, das ich brauchte, um es global zu setzen.

/ etc $ cat /etc/environments.d/Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin
4
Rob in Katy

Weitere Details, die vielleicht jemandem weiterhelfen könnten:

Aufgrund meiner eigenen Erkundungen weiß ich jetzt, wie Umgebungsvariablen auf 7 von 8 verschiedenen Arten festgelegt werden. Ich habe versucht, ein Envar zu einer Anwendung zu bringen, die ich unter Xcode entwickle. Ich setze "Tracer" -Envars mit diesen verschiedenen Methoden, um mir mitzuteilen, welche davon in den Geltungsbereich meiner Anwendung gelangen. Anhand der folgenden Abbildung können Sie erkennen, dass das Bearbeiten des "Schemas" in Xcode zum Hinzufügen von Argumenten genauso funktioniert wie "putenv". Was es in diesem Bereich nicht festgelegt hat: ~/.MACOS/environment.plist, app-spezifische plist, .profile und Hinzufügen einer Erstellungsphase zum Ausführen eines benutzerdefinierten Skripts (ich habe in Xcode [zumindest] einen anderen Weg gefunden, dies festzulegen man hat aber vergessen, was ich den Tracer nannte und kann es jetzt nicht finden; vielleicht ist es auf einer anderen Maschine ....)

GPU_DUMP_DEVICE_KERNEL ist 3

GPU_DUMP_TRK_ENVPLIST ist (null)

GPU_DUMP_TRK_APPPLIST ist (null)

GPU_DUMP_TRK_DOTPROFILE ist (null)

GPU_DUMP_TRK_RUNSCRIPT ist (null)

GPU_DUMP_TRK_SCHARGS ist 1

GPU_DUMP_TRK_PUTENV ist 1

... auf der anderen Seite, wenn ich in das Terminal gehe und "set" sage, scheint das einzige, was es bekommt, das von .profile zu sein (ich hätte gedacht, es würde auch environment.plist aufnehmen, und ich bin Ich war mir sicher, dass ich einmal einen zweiten Tracer Envar im Terminal gesehen habe, also ist seitdem wahrscheinlich etwas schief gelaufen.

1
Photovore

Schritt 1: Öffne ~/.bash_profile

Nun öffnet sich ein Texteditor:

Schritt 2: Variablenname sollte in Großbuchstaben geschrieben werden. in diesem Beispiel ist die Variable NODE_ENV

Schritt 3: export NODE_ENV=development

Speichern Sie es und schließen Sie es.

Starten Sie Ihr System neu.

Getan.

So überprüfen Sie die Umgebungsvariable: Öffnen Sie das Terminal und geben Sie Folgendes ein

echo $NODE_ENV 
0
Navya