Подтвердить что ты не робот

Переменная $PATH неправильно установлена ​​в gvim/MacVim, когда она открывается из поисковика

Я использую MacVim (в основном gvim для mac).

Если я открою macvim из командной строки, тогда будет правильно настроена переменная $PATH.

Если я открываю macvim через точку и нажимаю с помощью finder, переменная $PATH НЕ будет правильно установлена.

Может ли кто-нибудь дать мне некоторое представление?

Примечание. Я знаю, что хотя бы часть моего пути задана в ~/.bashrc, но я не уверен, где находится остальная часть.


<сильные > Примеры:

Если я открываю macvim из терминала:

% gvim basic.tex 

И затем в MacVim я иду:

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

Это правильный путь.


Когда я открываю файл с помощью мыши (в поиске)

Когда я иду:

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

Это дает мне небольшой путь. Зачем?

4b9b3361

Ответ 1

Место для установки переменных среды на Mac для приложений с графическим интерфейсом (те, которые были запущены через loginwindow, Finder и т.д.) ~/.MacOSX/environment.plist

Альтернативно в MacVim вы можете запускать процессы vim в командной оболочке (смотрите в настройках).

Подробнее см. этот пост.

Ответ 2

У меня была эта же проблема, но она появилась только после установки моей оболочки по умолчанию на zsh, например

export SHELL=/bin/zsh

Кажется, что есть ошибка в настройке OS X zsh. Краткое описание работы заключается в объединении /etc/zshenv в /etc/zprofile. В моем случае у меня не было /etc/zprofile, поэтому просто перемещение по файлу делало трюк:

sudo mv /etc/zshenv /etc/zprofile

Этот post описывает решение более подробно.

Ответ 3

Для меня просто создание новой символической ссылки из .zprofile в .zshrc сделало трюк:

ln -s ~/.zshrc ~/.zprofile

Ответ 4

Разница в PATH, вероятно, имеет какое-то отношение к различию между оболочкой входа (вход в систему) и оболочкой без входа (создание консоли).

На странице bash man:

Когда bash вызывается как интерактивная оболочка входа... он ищет ~/.bash_profile...

Когда запущена интерактивная оболочка, не являющаяся оболочкой входа, bash считывает и выполняет команды из /etc/ bash.bashrc и ~/.bashrc...

Что я сделал, чтобы обойти эту проблему, так это добавить следующий код в мой ~/.bash_profile, сообщив ему исходный текст ~/.bashrc, если он существует:

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