Wie setze ich die Variable $ PATH unter Mac OS X zurück?

17

Ich habe meine Pfadvariable durcheinander gebracht, und jetzt geben einige von mir ausgeführte Apps bei Befehlen wie Datum und Ruhezustand die Fehlermeldung "Befehl nicht gefunden" (Fehler 127) aus . Diese Befehle funktionieren einwandfrei, wenn sie direkt in der Shell ausgeführt werden.

Ich vermute, das hat etwas mit einer fehlerhaften $ PATH-Variablen zu tun und muss wissen, wie man sie zurücksetzt. Ich habe die Dateien ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc und ~ / .bashrc und ~ / .profile gelöscht .

Welche anderen Dateien könnten meinen $ PATH enthalten ? Gibt es eine einfachere Möglichkeit, den Pfad zurückzusetzen, als in die unzähligen Dateien zu graben, die meinen Pfad enthalten könnten?

Beachten Sie, dass dieses Pfadproblem nur bei meinem Benutzer auftritt. Ich habe einen Testbenutzer auf meinem System erstellt, und der Pfad war in Ordnung, wieder normal.

UPDATE: Danke. Ich weiß nicht, welche der gelöschten Dateien es getan hat, aber die Dinge funktionieren wieder. Ihr habt getan, was die "Experten" nicht konnten. Und ja, Chris, du hattest recht. Die von mir vorgenommenen PATH-Anpassungen befanden sich in bash_login. Aber irgendwie hat es funktioniert, ohne dass ich diese Anpassungen gelöscht habe. Ich glaube, es könnte sein, dass ich dieses Prefpane namens 'RCEnvironment' verwendet habe und einen Pfad mit Anführungszeichen und: PATH eingegeben habe. Ich weiß nicht, ob es Anführungszeichen braucht, und es ersetzt nicht: $ PATH, so dass wahrscheinlich die Wurzel des Fehlers ist. Ich habe vergessen, dass ich dieses Prefpane hatte!

Neil
quelle
1
/ etc / profile ist der wahrscheinlichste Ort, an dem die Anfangswerte für PATH festgelegt werden. Dies wirkt sich jedoch auf alle Benutzer aus. Es gibt auch ~ / .bash_login, das Sie nicht aufgelistet haben (obwohl Sie es möglicherweise bereits beseitigt haben).
Chris Johnsen

Antworten:

19

Wenn Sie eine ~ / .MacOSX / environment.plist-Datei haben, überprüfen Sie, ob sie einen Standard-PATH-Wert enthält.

Wenn es sich um ein XML-Format handelt (Plists können in vielen Formaten vorliegen), können Sie es mit einem beliebigen Texteditor bearbeiten. Überprüfen Sie es mit, plutil -lint ~/.MacOSX/environment.plistwenn Sie es von Hand bearbeiten.

Sie können auch Befehle wie Defaults oder PlistBuddy verwenden , um kontrollierte Änderungen an Plist- Dateien im XML- oder Binärformat vorzunehmen.


Sie können in den Initialisierungsdateien Ihrer Shell jederzeit einen eigenen Pfad festlegen.

Fügen Sie in die Startdateien Ihrer Shell ( .bashrc, oder .bash_profile/ .bash_login/ .profile) Folgendes ein :

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

Dadurch wird der beim Start der Shell festgelegte Standard-PFAD außer Kraft gesetzt (der erste PATH=wird nicht verwendet $PATH, daher wird immer nur mit dem begonnen, was Sie ihm geben).

Nur eine der Dateien ‚login‘ wird immer (das erste, das existiert und lesbar von verwendet werden ~/.bash_profile, ~/.bash_loginund ~/.profilewird verwendet werden). .profileDies dient der Abwärtskompatibilität mit anderen Shells. Wenn Sie diese verwenden, müssen Sie darauf achten, dass Sie keine für Bash spezifische Syntax verwenden . Wenn Sie mit .bash_loginoder gehen .bash_profile(sie sind funktionell bis auf die Namen gleichwertig), verwenden Sie eine Zeile wie [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]oben, damit die Login-Shells auch die Anpassungen erhalten, die in Ihrem vorgenommen wurden .bashrc.

Wenn Sie möchten, dass alle Instanzen von bash denselben PATH haben, verwenden Sie .bashrc. Wenn Sie häufig feststellen, dass Sie den PATH einer einzelnen Shell über die Befehlszeile interaktiv ändern und diesen geänderten PATH in Subshells verwenden möchten (ein Fall, der wahrscheinlich nicht besonders häufig vorkommt), sollten Sie die Anweisungen stattdessen in eine der Anmeldedateien einfügen . Wählen Sie nur eine der Anmeldedateien aus und verwenden Sie sie.

Chris Johnsen
quelle
8

1.Öffnen Sie Ihr Terminal

2.Sie können zunächst nur Ihren aktuellen $PATHTyp überprüfen

echo $ PATH

zum Terminal

3.Wenn das $PATHTerminal den gewünschten Pfad zurückgegeben hat, sind Sie gut. wenn nicht, tippe

Exportieren Sie PATH = / usr / bin: / bin: / usr / sbin: / sbin

, dann tippe

Berühren Sie ~ / .bash_profile

, und geben Sie dann ein

Öffne ~ / .bash_profile

Wenn sich ein EditText öffnet, geben Sie den gewünschten Pfad in diesen EditText ein. Geben Sie beispielsweise ein

PATH = / usr / bin: / bin: / usr / sbin: / sbin

( Dies ist die Standardeinstellung $PATHfür Mac, wenn Sie das zurücksetzen möchten, $PATHsodass Sie dies wahrscheinlich eingeben sollten.) Speichern Sie es, schließen Sie EditText und schließen Sie dann Terminal.

4.Nun haben Sie Ihren $PATHMac bereits geändert oder auf die Standardeinstellungen zurückgesetzt $PATH!

rObOtAndChalie
quelle
2
Ich habe das Gefühl, dass vieles darüber keine Wirkung hat. Warum denkst du, touchist erforderlich? Wenn Sie das Terminal sowieso schließen, warum sollten Sie dann das exportin der Befehlszeile ausführen , anstatt es nur zu ~/.bash_profile(was auch erforderlich exportist) hinzuzufügen und damit fertig zu sein? (Alternativ können Sie auch ausführen source ~/.bash_profile, um die Änderungen auf das aktuelle Fenster anzuwenden.)
Arjan,
Es stimmt, ein Teil davon ist überflüssig. Speichern Sie den PATH-Wert, der in .bash_profile gespeichert werden soll.
ThinkCode
1

Die rc/profilegezeigten Bearbeitungen von Chris Johnson funktionieren auch in /etc/profile.

Ich habe gerade angehängt:

export PATH="/usr/local/mariadb/bin:$PATH"

Zu meiner /etc/profileDatei in Mac OS X 10.9 Mavericks, um die MariaDB-Installation abzuschließen (die als hervorragender Ersatz für MySQL fungiert).

Zigmoo
quelle