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 ...
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.
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.
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.
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:
/private/etc/paths
, ein Pfad pro Zeile/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.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.
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
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).
Führen Sie den folgenden Befehl aus:
Sudo nano /etc/paths
(oder Sudo vim /etc/paths
für vim)
Ö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
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:
Wenn Sie im Terminal etwas getan haben, wird möglicherweise ~/.bash_history angezeigt
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:
source ~/.bashrc
Ctrl + x Ctrl + s
(um die Datei zu speichern)Ctrl + x Ctrl + c
(um Emacs zu schließen)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.
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.)
Ö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.
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
Offenes Terminal:
vi ~/.bash_profile
Übernehmen des Systemwechsels (kein Neustart des Computers erforderlich):
source ~/.bash_profile
(Funktioniert auch mit macOS Sierra 10.12.1)
Lassen Sie mich Sie von meinem persönlichen Beispiel auf eine sehr überflüssige Weise veranschaulichen.
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. Die Zeile unmittelbar nach echo $ Java_HOME wäre leer, wenn die Umgebungsvariable nicht gesetzt ist. Es muss in Ihrem Fall leer sein.
Jetzt müssen wir prüfen, ob wir die Datei bash_profile haben. Du hast gesehen, dass wir in meinem Fall bereits bash_profile haben. Wenn nicht, müssen wir eine bash_profile-Datei erstellen.
Überprüfen Sie erneut, ob die Datei bash_profile vorhanden ist.
Öffnen wir nun die Datei bash_profile. macOS öffnet es mit seinem Standardprogramm TextEdit.
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.
Öffnen Sie das Terminal erneut. Lassen Sie uns überprüfen, ob die Umgebungsvariable eingerichtet ist.
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 :
Wechseln Sie zum Ordner /Applications/Eclipse/Eclipse.app/Contents
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>
...
Parameter für App neu laden mit
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Eclipse/Eclipse.app
Starten Sie Eclipse neu
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
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.
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