$ PATH in Vim non corrisponde al Terminale


10

Sto usando MacVim e quando non lo lancio dal Terminale ( mvim) il suo $ PATH non include ciò che ho impostato nel mio .bash_profile. Sembra solo per avere i valori di default, /usr/bin:/bin:/usr/sbin:/sbin.

Sto eseguendo OS X 10.5.8. Anche se potessi impostarlo manualmente nel mio .vimrc, andrebbe bene, anche se preferirei che si spostasse dallo stesso posto di Terminal. Ho provato a seguire ciò che un sito ha suggerito, aggiungendo let $PATH += /blah/foo:/bar/etcinutilmente.

Modifica / Soluzione: vedere la mia risposta di seguito. MacVim ha un'opzione per risolvere questo problema.


Risposte:


12

MacVim sembra ottenere $ PATH in un modo che ignora i dotfile personalizzati di un utente normale.

Non posso dire perché preferiscano farlo in questo modo, ma sembra essere vero. Nelle preferenze (nella scheda Avanzate), puoi scegliere di "Avviare i processi Vim in una shell di accesso", ma $PATHper me migliora solo leggermente.

Il meglio che posso dire, MacVim usa /usr/libexec/path_helper- che a sua volta usa gli elementi trovati (1) nel /etc/pathsfile e (2) qualsiasi cosa aggiuntiva trovata nella /etc/paths.d/directory. Qualsiasi modifica effettuata nella home directory di un utente (via .profileo simili) viene ignorata.

In poche parole, ottieni le impostazioni predefinite di OSX, oltre a tutte le applicazioni a cui si aggiungono /etc/paths.d. (Ad esempio, MacTex lo fa sul mio sistema.) Quindi, se vuoi modificare il tuo percorso MacVim, un modo sarebbe quello di aggiungere un file con elementi a /etc/paths.d. (Non modificherei direttamente /etc/pathsda allora corri il rischio che le modifiche vengano annullate dagli aggiornamenti di sistema.)

Grazie per avermelo fatto sapere. Vado a presentare un bug della lista dei desideri su MacVim.


Avrei pensato anche quello, ma ho aggiunto alcune cose '/etc/paths.d/' che appaiono in Terminal ma non con MacVim.
Ciambella,

E in realtà, c'è di più nel mio file '/ etc / percorsi' di quello che c'è nel percorso di MacVim.
Ciambella,

@Donut: beh, è ​​strano. Sul mio computer, se aggiungo qualcosa a /etc/paths.d, viene visualizzato al prossimo avvio di MacVim. Che formato stai mettendo lì? Dovrebbe essere un elemento per riga, credo, con una directory $ PATH su ogni riga (ad esempio, / usr / texbin).
Telemaco,

Inizialmente mi mancava totalmente il tuo primo paragrafo: la scelta di "Avviare i processi Vim in una shell di accesso" mi ha aiutato. Vedi la mia risposta
Ciambella

7

A proposito, la preferenza "Avvia processi Vim in una shell di accesso" non è più disponibile in MacVim (almeno non v7.3). Vedo che l'avvio di MacVim dal Finder ottiene il percorso sbagliato, ma l'avvio da una shell (come "mvim") ottiene il percorso corretto.


3

Non proviene da .bash_profile, ma puoi usarlo nel tuo .vimrc:

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

Devi avere: o non sarà una variabile PATH corretta.


L'ho appena provato, e questo non sembra cambiare $ PATH per MacVim. L'ho anche testato con Vim nel Terminale (sia /usr/bin/vim(di Apple) che /opt/local/bin/vim(di MacPorts), e non sembra necessario. Vim nel Terminale raccoglie già il $ PATH corretto come indicato dai miei file di punti.
Telemaco,

1
Ho provato anche questo inutilmente.
Ciambella,

2

Non posso credere di non averlo visto prima. Ok, ci posso credere. Comunque, MacVim viene fornito con un'opzione che risolve questo. Sotto Preferenze basta selezionare "Avvia i processi Vim in una shell di accesso". È tutto, funziona. Snazzy. Che stupido.

Spiacenti

Ho scritto per sbaglio questa risposta senza rendermi conto che Telemaco mi aveva già dato la risposta corretta . Contrassegnato come suo come risposta.


Sono contento che sia ordinato
Telemaco,

1

Questo articolo di Mac Dev Center potrebbe essere di qualche utilità.


Non riesco a farlo funzionare. Potrebbe fare qualcosa di sbagliato. L'articolo suggerisce di aggiungere la proprietà 'LSEnvironment' nel 'file dell'elenco delle proprietà delle informazioni' di un'app che ho assunto essere ~ / Library / Preferences / org.vim.MacVim.plist. Ho creato un dizionario con 'PATH' (anche provato 'path' e '$ PATH') come chiave e cosa voglio per il percorso come valore stringa. Sembra ancora che stia tirando il PERCORSO da una fonte misteriosa. Schermata del file plist
ciambella

1

Non ho avuto problemi ad aggiungere un file alla directorypath.d. Ho aggiunto un file chiamato mysql, i cui contenuti erano:

/ Usr / local / mysql / bin [Invio]

Quindi ho inserito questo file nella directorypath.d e ho cambiato la sua proprietà in root: wheel. Ora la directory mysql viene automaticamente aggiunta alla mia variabile $ PATH.

Non ho studiato a fondo, ma forse (a) includendo [RETURN] alla fine della riga e / o (b) impostando la proprietà del file su root, potrebbe essere necessario.



1

Mi sono imbattuto in questo oggi. MacVim non ha più l'opzione "login shell" e la modifica dei file di sistema per un'impostazione specifica dell'utente è imprecisa.

Ecco una soluzione che utilizza solo le opzioni vim (vedi :help :!e :help shell).

Nel tuo ~/.vimrcaggiungi le righe

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

Ciò rende bashla shell predefinita da (Mac) Vim e aggiunge il -lflag (shell di accesso) ai comandi richiamati :!{cmd}. Durante l'esecuzione :shell, bash viene avviato come "shell interattiva che non è una shell di accesso".

Per fare il $PATHlavoro, devi averlo impostato ~/.bash_profileper :!, e ~/.bashrcper :shell. (Vedi INVOCATIONin man bash)

AGGIORNAMENTO: Questo non era necessario sull'altro mio computer, quindi c'è probabilmente qualcos'altro che è la causa principale.


1
Puoi fare una cosa simile per zsh. Definire $PATHin .zprofile, e comprendono la -lbandiera sia set shello set shellcmdflag.
Jladan,

0

So di più su Unix che su Mac, quindi i seguenti consigli possono o meno funzionare. Prova a mettere questo il tuo file .vimrc:

! source ~/.bash_profile

Questo potrebbe fare il trucco, ma c'è un leggero avvertimento: il .bash_profile è destinato a essere acquistato una sola volta. Può contenere alcuni comandi non idempotenti (cose che dovrebbero essere eseguite una sola volta). Caso in questione:

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

Più viene chiamato, più $PATHdiventa grande e ridondante . Tuttavia, se questo non è un grosso problema, la raccomandazione su unix sarebbe quella di inserire il comando singolo ~/.bashrced eseguire source ~/.bashrcdal tuo .vimrcfile.


Né il sourcing .bash_profile o .bashrc ha funzionato. Ho provato a eseguirlo manualmente :source .bash_profilema viene fuori un errore "Non un comando dell'editor" per ogni comando nel file e lo stesso con .bashrc.
Ciambella

scusa ... cosa stavo pensando ... potresti provare! fonte .bash_profile
David Berger,

Ho provato sia .bash_profile che .bashrc ma ancora non ci sono riuscito. Ecco cosa sto usando nel mio .bash_profile per cambiare PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' E nel mio .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin: $ PATH'. Ed è .bash_profile che in realtà influenza le mie sessioni Terminal.
Ciambella

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.