2010-07-27 1 views
16

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

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

Если я открываю macvim через точку и нажимаю с помощью искателя, переменная $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 

Это дает мне немного путь. Зачем?

ответ

6

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

Поочередно в MacVim вы можете запускать процессы VIM в login- shell (посмотрите в настройках).

Для получения дополнительной информации см. this post.

+0

Опция для запуска процессов VIM в регистрации-оболочки не доступен в MacVim 7.3 больше. –

3

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

На странице Баш человек:

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

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

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

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

Не приведет ли это к загрузке bashrc дважды, когда это интерактивная оболочка? – sixtyfootersdude

+1

Я не верю, что он будет загружен дважды. Теперь, когда я думаю об этом, это не решение вашей проблемы ... Это решает проблему, когда вы ведете удаленную запись (например, через ssh), а ваш '~/.bashrc' не загружается. Вы не дистанционно регистрируетесь. –

+1

Но когда вы открываете терминал * обычно *, он будет загружать ваш '.bash_profile', тогда он загрузит ваш' .bashrc' (возможно, другой порядок). То, что вы делаете, сделает это; '.bash_profile', который загрузит ваш' .bashrc', тогда он загрузит ваш '.bashrc'. Вероятно, это не имеет значения, но если вы хотите работать, вы можете иметь var '$ BASHRC_LOADED' в вашем' .bashrc' и заключить все в 'if (not ($ BASHRC_LOADED))'. * (извините, плохой синтаксис) * – sixtyfootersdude

15

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

export SHELL=/bin/zsh 

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

sudo mv /etc/zshenv /etc/zprofile

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

+5

Это решение, упомянутое в официальной вики-странице MacVim github: https://github.com/b4winckler/macvim/wiki/Troubleshooting (под заголовком «Для пользователей zsh») –

+1

Я думаю, что, возможно, ключ получает eval/usr/libexec/path_helper -s из '/ etc/zshenv'. Я нахожу слово «слияние» в ответе путаным. Тем не менее, очень полезно, Thx. Upvote! –

+0

Вместо использования системы '/ etc/zprofile' вы можете использовать свой собственный' ~/.zprofile' –

7

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

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

это работает для меня. это простейшее обходное решение. просто измените с '.zsrrc' на' .zshrc' – Irakli

+0

Или просто определите свои пути в .zprofile вместо .zshrc. – adampasz

Смежные вопросы