2010-07-27 8 views
16

Sto usando MacVim (sostanzialmente gvim per Mac).

Se apro macvim dalla riga di comando, la mia variabile $PATH verrà impostata correttamente.

Se apro macvim tramite point e fare clic con il finder, la variabile $PATH NON verrà impostata correttamente.

Qualcuno può darmi qualche intuizione?

Nota: So che almeno una parte del mio percorso è impostato in ~/.bashrc, ma non sono sicuro dove si trova il resto di esso.


Esempi:

Se apro MacVim dal terminale:

% gvim basic.tex 

E poi nel MacVim vado:

:!echo $PATH 
/opt/local/bin:/opt/local/sbin:/sw/bin:/sw/sbin:/Applications/MacVim.app/Contents/M 
acOS:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/texbin:/usr/X11R6/bin 

Questa è la strada giusta.


Quando ho aperto il file con il mouse (nel Finder)

Quando vado:

:!echo $PATH 
/usr/bin:/bin:/usr/sbin:/sbin 

mi dà un piccolo sentiero. Perché?

risposta

6

Il posto delle variabili di ambiente su Mac per applicazioni GUI (quelli avviati tramite loginwindow, il Finder, ecc) è ~/.MacOSX/environment.plist

alternativa in MacVim si può scegliere di avviare processi di Vim in un login- shell (guarda nelle preferenze).

Per maggiori informazioni visita this post.

+0

L'opzione per avviare processi di Vim in un account di accesso-shell non è disponibile in MacVim 7.3 più. –

3

La differenza nei PATH probabilmente ha qualcosa a che fare con la differenza tra una shell di login (login) e una shell non di login (che porta su una console).

Dalla pagina man di bash:

Quando bash è invocata come una shell di login interattiva ... sembra di ~/.bash_profile ...

Quando una shell interattiva che non è un la shell di login è avviata, bash legge ed esegue i comandi da /etc/bash.bashrc e ~/.bashrc ...

Quello che ho fatto per aggirare questo problema è stato quello di aggiungere il seguente codice al mio ~/.bash_profile, dicendogli di fonte mio ~/.bashrc se esistente:

if [ -f ~/.bashrc ]; then 
    . ~/.bashrc 
fi 
+1

Non si verificherà che in bashrc venga caricato due volte quando si tratta di una shell interattiva? – sixtyfootersdude

+1

Non credo che verrà caricato due volte. Ora che ci penso, questa non è una soluzione al tuo problema ... Questo risolve il problema in cui stai effettuando l'accesso da remoto (ad esempio tramite ssh) e il tuo '~/.bashrc' non viene caricato. Non stai effettuando il login da remoto. –

+1

Ma quando apri un terminale * normalmente *, caricherà il tuo '.bash_profile', quindi caricherà il tuo' .bashrc' (forse l'ordine opposto). Quello che stai facendo lo farà; '.bash_profile' che caricherà il tuo' .bashrc', quindi caricherà il tuo '.bashrc'. Probabilmente questo non ha importanza, ma se volessi fare un lavoro, potresti avere una var '$ BASHRC_LOADED' nel tuo' .bashrc' e racchiudere tutto in 'if (not ($ BASHRC_LOADED))'. * (mi dispiace sintassi errata) * – sixtyfootersdude

15

Ho avuto questo stesso problema, ma è apparso solo dopo aver impostato il mio shell di default per zsh in questo modo

export SHELL=/bin/zsh 

sembra che ci sia un bug nel setup zsh OS X. Il lavoro in breve è quello di unire /etc/zshenv in /etc/zprofile. Nel mio caso non ho avuto un /etc/zprofile in modo semplicemente spostando sopra il file ha fatto il trucco:

sudo mv /etc/zshenv /etc/zprofile

Questa post descrive la soluzione in modo più dettagliato.

+5

Questa è la soluzione menzionata sul wiki github ufficiale di MacVim: https://github.com/b4winckler/macvim/wiki/Troubleshooting (sotto l'intestazione "Per utenti zsh") –

+1

Penso che forse la chiave è ottenere l'eval/usr/libexec/path_helper -s comando di '/ etc/zshenv'. Trovo la parola "unire" nella risposta confusa. Comunque, molto utile, Thx. Upvote! –

+0

Invece di usare il sistema '/ etc/zprofile' puoi usare il tuo'// .zprofile' –

7

Per me, semplicemente creando un nuovo collegamento simbolico da .zprofile al .zshrc ha fatto il trucco:

ln -s ~/.zshrc ~/.zprofile 
+1

questo funziona per me. è una soluzione più semplice. cambia da '.zsrrc' a' .zshrc' – Irakli

+0

O semplicemente definisci i tuoi percorsi in .zprofile invece di .zshrc. – adampasz

Problemi correlati