Почему мой путь командной строки vim отличается от моей оболочки PATH?

например.

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/bin:~/bin:/usr/local/Cellar/python3/3.2.3/bin

$ vim 
:! echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:~/bin:/usr/local/Cellar/python3/3.2.3/bin

Я ожидал, что они будут такими же. Почему они разные?

Если это имеет значение, вот моя оболочка, версия vim и версия ОС:

$ echo $SHELL
SHELL=/usr/local/bin/zsh

$ /usr/local/bin/zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)

$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 20 2012 13:16:02)
Compiled by [email protected]


$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8.2
BuildVersion:   12C60

(Mountain Lion)

Ответ 1

Я не смог разрешить это с помощью zsh и закончил использование bash для моей оболочки vim.

Вот что я сделал:

  • изменил мой .zshrc для работы с bash
  • ln -s .zshrc .bashrc
  • добавил set shell=bash в мой .vimrc файл

и теперь моя команда PATH командной строки vim равна моей PATH оболочки zsh.

Ответ 2

Это известный проблема, введенная Apple в OS X 10.5 Leopard.

Если вы используете Bash или Zsh и используете неинтерактивные оболочки, вы.

Запуск sudo chmod ugo-x /usr/libexec/path_helper исправит вас, но вы должны взглянуть на статью, чтобы понять, почему.

От этот ответ SO

Ответ 3

Есть много подобных вопросов по SO и SU.

Ваша оболочка выполняет разные * rc файлы в зависимости от аргументов, указанных во время запуска. Поэтому вам необходимо настроить Vim так, чтобы он запускал вашу оболочку с правильными аргументами.

В bash появляется следующее: я почти уверен, что в zsh есть аналогичный флаг.

set shell=bash\ -i

См. $ man zsh для правильного флага и правильного порядка выполнения.

Ответ 4

Я не использую mac или zsh (я на Linux), однако я столкнулся с этой проблемой, когда я запускал gvim из меню MATE.

Я решил это, добавив это в мой .vimrc:

if $PATH !~ "\.rbenv"
    let $PATH="/home/username/.rbenv/shims:/home/username/.rbenv/bin:" . $PATH
endif

Это позволяет избежать его установки, если вы запускаете vim из терминала, иначе пути rbenv будут включены дважды.

Я попробовал настроить приложение для запуска через терминал, но это не помогло.