2010-07-27 17 views
16

estoy usando MacVim (básicamente gVim para el mac).

Si abro macvim desde la línea de comando, entonces mi variable $PATH se establecerá correctamente.

Si abro macvim mediante el punto y hago clic con el buscador, la variable $PATH NO se establecerá correctamente.

¿Puede alguien darme una idea?

Nota: Sé que al menos parte de mi ruta está configurada en ~/.bashrc, pero no estoy seguro de dónde está configurado el resto.


Ejemplos:

Si abro MacVim desde el terminal:

% gvim basic.tex 

Y luego, en MacVim voy:

:!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 

Este es el camino correcto.


Al abrir el archivo con el ratón (en el buscador)

Cuando voy:

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

Me da un poco de camino. ¿Por qué?

Respuesta

6

El lugar para establecer las variables de entorno en el Mac para aplicaciones de interfaz gráfica de usuario (las iniciadas a través de loginwindow, el Finder , etc.) es ~/.MacOSX/environment.plist

alternativamente en MacVim puede elegir para poner en marcha los procesos vim en un login- shell (mira en las preferencias).

Para más información ver this post.

+0

La opción para iniciar procesos vim que en un inicio de sesión cáscara no está disponible en MacVim 7.3 más. –

3

La diferencia en los PATH probablemente tiene algo que ver con la diferencia entre un shell de inicio de sesión (iniciar sesión) y un shell que no es de inicio de sesión (abrir una consola).

Desde la página de manual de bash:

Cuando bash se ejecuta un intérprete interactivo de ingreso ... busca ~/.bash_profile ...

Cuando un shell interactivo que no es una inicia el shell de inicio de sesión, bash lee y ejecuta comandos desde /etc/bash.bashrc y ~/.bashrc ...

lo que hice para solucionar este problema fue la de añadir el siguiente código a mi ~/.bash_profile, diciéndole a la fuente de mi ~/.bashrc si existe:

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

¿No dará como resultado que bashrc se cargue dos veces cuando se trata de un shell interactivo? – sixtyfootersdude

+1

No creo que se cargue dos veces. Ahora que lo pienso, esta no es una solución a tu problema ... Esto resuelve el problema donde estás iniciando sesión de forma remota (por ejemplo, a través de ssh) y tu '~/.bashrc' no se carga. No está iniciando sesión de forma remota. –

+1

Pero cuando abre una terminal * normalmente *, cargará su '.bash_profile' y luego cargará su' .bashrc' (tal vez orden inverso). Lo que estás haciendo lo hará; '.bash_profile' que cargará tu' .bashrc' luego cargará tu '.bashrc'. Probablemente esto no importe, pero si quisieras hacer un trabajo alternativo, podrías tener var '$ BASHRC_LOADED' en tu' .bashrc' y encerrar todo en 'if (not ($ BASHRC_LOADED))'. * (Lo siento, mala sintaxis) * – sixtyfootersdude

15

tenía este mismo problema pero sólo apareció después de ajustar mi shell por defecto de zsh al igual que

export SHELL=/bin/zsh 

parece que hay un error en la configuración de zsh OS X. El trabajo en resumen es fusionar /etc/zshenv en /etc/zprofile. En mi caso, yo no tenía un /etc/zprofile por lo que sólo se mueve sobre el archivo hizo el truco:

sudo mv /etc/zshenv /etc/zprofile

Este post describe la solución con más detalle.

+5

Esta es la solución mencionada en el wiki oficial de MacVim github: https://github.com/b4winckler/macvim/wiki/Troubleshooting (bajo el encabezado "For zsh users") –

+1

Creo que tal vez la clave es obtener el eval/usr/libexec/path_helper -s comando fuera de '/ etc/zshenv'. Encuentro que la palabra "fusionar" en la respuesta es confusa. Aún así, muy útil, Thx. ¡Voto! –

+0

En lugar de usar el sistema '/ etc/zprofile' puedes usar tu propio' ~/.zprofile' –

7

Para mí, la simple creación de un nuevo enlace simbólico desde .zprofile a .zshrc hizo el truco:

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

esto funciona para mí. es una solución más simple. simplemente cambie de '.zsrrc' a' .zshrc' – Irakli

+0

O simplemente defina sus rutas en .zprofile en lugar de .zshrc. – adampasz

Cuestiones relacionadas