$ PATH in Vim stimmt nicht mit Terminal überein

7560
donut

Ich verwende MacVim und wenn ich es nicht über das Terminal ( mvim) starte, enthält sein $ PATH nicht das, was ich in meinem .bash_profile eingestellt habe. Es scheint nur die Standardwerte zu haben, /usr/bin:/bin:/usr/sbin:/sbin.

Ich verwende OS X 10.5.8. Selbst wenn ich es manuell in meinem .vimrc einstellen könnte, wäre das in Ordnung, obwohl ich es vorziehen würde, es von derselben Stelle wie das Terminal zu ziehen. Ich habe versucht, dem zu folgen, was eine Site vorschlug, let $PATH += /blah/foo:/bar/etcohne Erfolg.

Bearbeiten / Lösung: Siehe meine Antwort unten. MacVim hat eine Option, um dies zu beheben.

9
Ähnliche [Frage hier] (https://vi.stackexchange.com/q/15739/9850) Brad Parks vor 6 Jahren 0

10 Antworten auf die Frage

12
Telemachus

Es scheint, dass MacVim $ PATH so erhält, dass die benutzerdefinierten Punktdateien eines normalen Benutzers ignoriert werden.

Ich kann nicht sagen, warum sie es lieber so machen, aber es scheint wahr zu sein. In den Voreinstellungen (auf der Registerkarte "Erweitert") können Sie "Vim-Prozesse in einer Login-Shell starten" auswählen, was jedoch $PATHfür mich nur geringfügig ist.

Das Beste, was ich sagen kann, verwendet MacVim /usr/libexec/path_helper- das wiederum verwendet die gefundenen Elemente (1) in der /etc/pathsDatei und (2) zusätzliche Elemente im /etc/paths.d/Verzeichnis. Alle Änderungen, die im Heimatverzeichnis eines Benutzers (via .profileoder dergleichen) vorgenommen wurden, werden ignoriert.

Kurz gesagt, Sie erhalten die OSX-Standardwerte sowie alle Anwendungen, die sich selbst hinzufügen /etc/paths.d. (MacTex führt dies beispielsweise auf meinem System durch.) Wenn Sie Ihren MacVim-Pfad anpassen möchten, können Sie zum Beispiel eine Datei mit Elementen hinzufügen /etc/paths.d. (Ich würde nicht direkt bearbeiten, /etc/pathsda sonst die Gefahr besteht, dass die Änderungen durch Systemaktualisierungen rückgängig gemacht werden.)

Danke, dass Sie mir das wissen lassen. Ich werde jetzt einen Wunschzettel-Fehler bei MacVim einreichen.

Ich hätte das auch gedacht, aber ich habe ein paar Dinge hinzugefügt, "/etc/paths.d/", die in Terminal auftauchen, aber nicht bei MacVim. donut vor 14 Jahren 0
Und in meiner Datei '/ etc / pfade' befindet sich tatsächlich mehr als in MacVims Pfad. donut vor 14 Jahren 0
@ Donut: na ja, das ist seltsam. Wenn ich auf meinem Rechner etwas zu `/ etc / pfade.d 'hinzufüge, wird es beim nächsten Start von MacVim angezeigt. Welches Format stellen Sie dort ein? Ich glaube, es sollte ein Element pro Zeile mit einem $ PATH-Verzeichnis in jeder Zeile sein (z. B. / usr / texbin). Telemachus vor 14 Jahren 0
Ich habe Ihren ersten Absatz ursprünglich völlig vermisst: Die Entscheidung, "Vim-Prozesse in einer Login-Shell starten" zu wählen, hat mich ausgereicht. Sehen Sie meine Antwort. donut vor 14 Jahren 0
7
L S

Übrigens ist die Einstellung "Vim-Prozesse in einer Login-Shell starten" in MacVim nicht mehr verfügbar (zumindest nicht in Version 7.3). Ich sehe, dass beim Starten von MacVim aus dem Finder der falsche Pfad angezeigt wird, beim Starten von MacVim aus einer Shell (als "mvim") jedoch der richtige Pfad.

3
Richard Turner

Es stammt nicht aus .bash_profile, aber Sie können dies in Ihrer .vimrc verwenden:

let $PATH=$PATH . ':/blah/foo' 

Sie müssen Folgendes haben: oder es ist keine korrekte PATH-Variable.

Ich habe es gerade ausprobiert, und dies scheint den $ PATH für MacVim nicht zu ändern. Ich habe es auch mit Vim im Terminal getestet (beide `/ usr / bin / vim '(von Apple) und` / opt / local / bin / vim' (von MacPorts)), und es scheint unnötig. Vim im Terminal wählt bereits aus den korrekten $ PATH aus meinen Punktdateien auf. Telemachus vor 14 Jahren 0
Ich habe das auch versucht, ohne Erfolg. donut vor 14 Jahren 1
2
donut

Ich kann nicht glauben, dass ich das vorher nicht gesehen habe. Okay, ich kann es glauben. Auf jeden Fall bietet MacVim eine Option, die dieses Problem löst. Aktivieren Sie unter Voreinstellungen einfach "Vim-Prozesse in einer Login-Shell starten". Das ist es, es funktioniert. Schick Ich Idiot.

Hoppla

Ich schrieb diese Antwort aus Versehen, ohne zu merken, dass Telemachus mir bereits die richtige Antwort gegeben hatte . Markierte sein als die Antwort.

Ich bin froh, dass es sortiert ist Telemachus vor 14 Jahren 0
1
Lawrence Velázquez

Dieser Mac Dev Center-Artikel kann von Nutzen sein.

Kann es nicht zur Arbeit bringen. Könnte etwas falsch machen. Der Artikel schlägt vor, die 'LSEnvironment'-Eigenschaft in die' Informationseigenschaftendatei 'einer App hinzuzufügen, die ich als ~ / Library / Preferences / org.vim.MacVim.plist ansehe. Ich erstellte ein Wörterbuch mit 'PATH' (auch versucht 'Pfad' und '$ PATH') als Schlüssel und was ich als Pfadwert für den Pfad möchte. Es scheint immer noch, PATH aus einer geheimnisvollen Quelle zu ziehen. [Screenshot der plist-Datei] (http://screencast.com/t/0B7vp3NwCv) donut vor 14 Jahren 0
1
Jan Hettich

Ich hatte keine Probleme beim Hinzufügen einer Datei zum Verzeichnis "pfade.d". Ich habe eine Datei namens mysql hinzugefügt, deren Inhalt:

/ usr / local / mysql / bin [zurück]

Dann legte ich diese Datei unter das Verzeichnis "path.d" und änderte ihren Besitz in root: wheel. Jetzt wird das Mysql-Verzeichnis automatisch zu meiner $ PATH-Variablen hinzugefügt.

Ich habe nicht vollständig recherchiert, aber möglicherweise (a) einschließlich [RETURN] am Ende der Zeile und / oder (b) das Setzen des Dateibesitzes auf root ist möglicherweise erforderlich.

0
David Berger

Ich kenne mehr über Unix als über Macs. Daher kann der folgende Hinweis funktionieren. Versuchen Sie, diese .vimrc-Datei einzufügen:

! source ~/.bash_profile 

Das könnte den Trick tun, aber es gibt eine kleine Einschränkung: Das .bash_profile soll nur einmal beschafft werden. Es kann einige nicht idempotente Befehle enthalten (Dinge, die nur einmal ausgeführt werden sollten). Fallbeispiel:

$PATH += /blah/foo:/bar/etc 

Je mehr gerufen wird, desto größer und redundanter $PATHwird es. Wenn dies jedoch keine so große Sache ist, würde die Empfehlung für Unix lauten, den einmaligen Befehl in Ihre Datei einzufügen ~/.bashrcund von dort auszuführen .source ~/.bashrc.vimrc

Weder das Sourcing von .bash_profile noch von .bashrc hat funktioniert. Ich habe versucht, `: source .bash_profile` manuell auszuführen, aber es wird nur der Fehler" Kein Editorbefehl "für jeden Befehl in der Datei angezeigt, und das gleiche gilt für .bashrc. donut vor 14 Jahren 0
Entschuldigung ... was habe ich gedacht ... Sie könnten es versuchen! quelle.bash_profile David Berger vor 14 Jahren 0
Versuchte sowohl .bash_profile als auch .bashrc, aber immer noch nicht. Folgendes verwende ich in meinem .bash_profile, um PATH zu ändern: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' Und in meinem .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin: $ PATH'. Und es ist .bash_profile, das tatsächlich meine Terminalsitzungen beeinflusst. donut vor 14 Jahren 0
0
a paid nerd

MacVim wird quellen ~/.zprofileund /etc/profileso können Sie Ihre PATHEinstellungen dort eingeben .

Siehe https://github.com/b4winckler/macvim/wiki/Troblem#for-zsh-users und diese Frage zum Stack Overflow .

(Getestet mit MacVim Version 7.3 (65)).

0
Brad Parks

Ich habe eine sehr ähnliche Frage auf der Vim StackExchange Site gestellt und dort eine Antwort gepostet, die für mich funktioniert!

0
jladan

Ich bin heute darauf gestoßen. MacVim verfügt nicht mehr über die Option "Login-Shell", und die Bearbeitung systemweiter Dateien für eine benutzerspezifische Einstellung ist unübersichtlich.

Hier ist eine Lösung, die nur vim-Optionen verwendet (siehe :help :!und :help shell).

In Ihrem ~/.vimrcfügen Sie die Zeilen hinzu

set shell=/bin/bash set shellcmdflag=-l\ -c 

Dadurch wird bashIhre Standard-Shell von (Mac) Vim erstellt und das -lFlag (Login-Shell) zu Befehlen hinzugefügt, die mit aufgerufen werden :!. Bei der Ausführung :shellwird bash als "interaktive Shell, die keine Login-Shell ist" gestartet.

Um die $PATHArbeit zu machen, müssen Sie sie ~/.bash_profilefür :!und ~/.bashrcfür festgelegt haben :shell. (Siehe INVOCATIONin man bash)

UPDATE: Dies war auf meinem anderen Computer nicht notwendig, daher ist wahrscheinlich etwas anderes die Hauptursache.

Ähnliches kann man für zsh tun. Definieren Sie `$ PATH` in` .zprofile` und fügen Sie das `-l`-Flag in` set shell` oder `set shellcmdflag` ein. jladan vor 5 Jahren 0