Переменная $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
Это дает мне небольшой путь. Зачем?
Ответы
Ответ 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