$ PATH en Vim no coincide con Terminal

10

Estoy usando MacVim y cuando no lo ejecuto desde la Terminal ( mvim) su $ PATH no incluye lo que he configurado en mi .bash_profile. Sólo parece tener los valores por defecto, /usr/bin:/bin:/usr/sbin:/sbin.

Estoy ejecutando OS X 10.5.8. Incluso si pudiera configurarlo manualmente en mi .vimrc, estaría bien, aunque preferiría que se extraiga del mismo lugar que Terminal. He intentado seguir lo que sugirió un sitio, let $PATH += /blah/foo:/bar/etcsin obtener resultados.

Edición / Solución: vea mi respuesta a continuación. MacVim tiene una opción para solucionar esto.

rosquilla
fuente
Pregunta
Brad Parks

Respuestas:

12

MacVim parece estar obteniendo el $ PATH de una manera que ignora los archivos de puntos personalizados de un usuario normal.

No puedo decir por qué prefieren hacerlo de esta manera, pero parece ser cierto. En las preferencias (en la pestaña Avanzado), puede elegir "Iniciar procesos de Vim en un shell de inicio de sesión", pero solo mejora $PATHligeramente para mí.

Lo mejor que puedo decir es que MacVim usa /usr/libexec/path_helper, que a su vez usa los elementos encontrados (1) en el /etc/pathsarchivo y (2) cualquier cosa adicional encontrada en el /etc/paths.d/directorio. Cualquier cambio realizado en el directorio de inicio de un usuario (a través de .profileo similar) se ignora.

En pocas palabras, obtienes los valores predeterminados de OSX, además de las aplicaciones a las que se agregan /etc/paths.d. (Por ejemplo, MacTex lo hace en mi sistema). Entonces, si desea ajustar su ruta MacVim, una forma sería agregar un archivo con elementos /etc/paths.d. (No editaría directamente /etc/pathsdesde entonces, corre el riesgo de que los cambios se deshagan con las actualizaciones del sistema).

Gracias por dejarme saber esto. Me voy a presentar un error de lista de deseos en MacVim.

Telémaco
fuente
También lo habría pensado, pero he agregado algunas cosas '/etc/paths.d/' que aparecen en Terminal pero no con MacVim.
dona
Y en realidad, hay más en mi archivo '/ etc / paths' que lo que está en la ruta de MacVim.
donut
@ Donut: bueno, eso es extraño. En mi máquina, si agrego algo /etc/paths.d, aparece la próxima vez que arranque MacVim. ¿Qué formato estás poniendo ahí? Debe ser un elemento por línea, creo, con un directorio $ PATH en cada línea (por ejemplo, / usr / texbin).
Telemachus
Perdí totalmente tu primer párrafo originalmente: elegir "Lanzar procesos de Vim en un shell de inicio de sesión" fue el truco para mí. Mira mi respuesta.
donut
7

Por cierto, la preferencia "Iniciar procesos Vim en un shell de inicio de sesión" ya no está disponible en MacVim (al menos no v7.3). Veo que al iniciar MacVim desde el Finder se obtiene la ruta incorrecta, pero al iniciarlo desde un shell (como "mvim") se obtiene la ruta correcta.

LS
fuente
3

No proviene de .bash_profile, pero puede usar esto en su .vimrc:

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

Debe tener el: o no será una variable PATH correcta.

Richard Turner
fuente
Acabo de probarlo, y esto no parece cambiar el $ PATH para MacVim. También lo probé con Vim en la Terminal (tanto /usr/bin/vimde Apple) como /opt/local/bin/vim(de MacPorts), y parece innecesario. Vim en la terminal ya recoge el $ PATH adecuado según el origen de mis archivos de puntos.
Telemachus
1
Intenté esto también en vano.
donut
2

No puedo creer que no haya visto esto antes. Vale, puedo creerlo. De todos modos, MacVim viene con una opción que resuelve esto. En Preferencias, simplemente marque "Iniciar procesos de Vim en un shell de inicio de sesión". Eso es, funciona. Elegante. Estúpido yo.

Ups

Accidentalmente escribí esta respuesta sin darme cuenta de que Telémaco ya me había dado la respuesta correcta . Marcó la suya como la respuesta.

rosquilla
fuente
Me alegro de que esté resuelto
Telémaco,
1

Este artículo de Mac Dev Center puede ser de alguna utilidad.

Lawrence Velázquez
fuente
No puedo hacer que funcione. Podría estar haciendo algo mal. El artículo sugiere agregar la propiedad 'LSEnvironment' en el 'archivo de lista de propiedades de información' de una aplicación que supuse que era ~ / Library / Preferences / org.vim.MacVim.plist. Lo convertí en un diccionario con 'PATH' (también probé 'path' y '$ PATH') como la clave y lo que quiero para la ruta como un valor de cadena. Todavía parece estar sacando RUTA de alguna fuente misteriosa. Captura de pantalla del archivo plist
donut
1

No tuve problemas para agregar un archivo al directorio path.d. Agregué un archivo llamado mysql, cuyo contenido era:

/ usr / local / mysql / bin [Volver]

Luego coloqué este archivo en el directorio caminos.d, y cambié su propiedad a root: wheel. Ahora el directorio mysql se agrega automáticamente a mi variable $ PATH.

No investigué completamente, pero posiblemente (a) incluyendo el [RETORNO] al final de la línea, y / o (b) estableciendo la propiedad del archivo como raíz, podría ser necesario.

Jan Hettich
fuente
1

Me encontré con esto hoy. MacVim ya no tiene la opción "shell de inicio de sesión", y la edición de archivos de todo el sistema para una configuración específica del usuario es incompleta.

Aquí hay una solución que usa solo opciones vim (ver :help :!y :help shell).

En tu ~/.vimrcagregar las líneas

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

Esto hace que bashsu shell predeterminado sea (Mac) Vim, y agrega la -lbandera (shell de inicio de sesión) a los comandos invocados con :!{cmd}. Al ejecutar :shell, bash se inicia como un "shell interactivo que no es un shell de inicio de sesión".

Para hacer el $PATHtrabajo, necesita tenerlo configurado ~/.bash_profilepara :!y ~/.bashrcpara :shell. (Ver INVOCATIONen man bash)

ACTUALIZACIÓN: Esto no era necesario en mi otra computadora, por lo que es probable que haya otra cosa que sea la causa raíz.

jladan
fuente
1
Puedes hacer algo similar para zsh. Definir $PATHen .zprofile, e incluyen la -lbandera en cualquiera set shello set shellcmdflag.
jladan
0

Sé más sobre Unix que sobre Mac, por lo que los siguientes consejos pueden o no funcionar. Intenta poner este tu archivo .vimrc:

! source ~/.bash_profile

Eso podría hacer el truco, pero hay una pequeña advertencia: el .bash_profile solo debe obtenerse una vez. Puede contener algunos comandos no idempotentes (cosas que solo deberían ejecutarse una vez). Caso en punto:

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

Cuanto más se llama, más grande y más redundante se $PATHvuelve. Sin embargo, si eso no es un gran problema, la recomendación en Unix sería poner el comando de una sola vez ~/.bashrcy ejecutarlo source ~/.bashrcdesde su .vimrcarchivo.

David Berger
fuente
Ni el abastecimiento de .bash_profile ni .bashrc funcionaron. Intenté ejecutarlo manualmente, :source .bash_profilepero aparece un error "No es un comando del editor" para cada comando en el archivo y lo mismo con .bashrc.
donut
lo siento ... en qué estaba pensando ... ¡podrías intentarlo! source .bash_profile
David Berger
Probé tanto .bash_profile como .bashrc pero aún así no puedo. Esto es lo que estoy usando en mi .bash_profile para cambiar PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' Y en mi .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin: $ PATH'. Y es .bash_profile lo que realmente afecta mis sesiones de Terminal.
donut