Why does my vim command-line path differ from my s

2019-03-19 04:58发布

e.g.,

$ 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

I expected them to be the same. Why are they different?

If it makes a difference, here is my shell, vim version and OS version:

$ 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 root@apple.com


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

(Mountain Lion)

4条回答
The star\"
2楼-- · 2019-03-19 05:22

There are many similar questions on SO and SU.

Your shell executes different *rc files depending on the arguments its given at launch time. Therefore, you need to setup Vim so that it launchs your shell with the right arguments.

The following helps in bash, I'm almost certain there's a similar flag in zsh.

set shell=bash\ -i

See $ man zsh for the right flag and the right execution order.

查看更多
疯言疯语
3楼-- · 2019-03-19 05:26

This is a known problem introduced by Apple in OS X 10.5 Leopard.

If you are using Bash or Zsh and are using non-interactive shells, you are affected.

Running sudo chmod ugo-x /usr/libexec/path_helper will fix you up, but you should take a look at the article to see why.

From this SO answer

查看更多
时光不老,我们不散
4楼-- · 2019-03-19 05:26

I don't use mac or zsh (I am on linux), however I ran into this problem when I ran gvim from the MATE Menu.

I solved it by adding this to my .vimrc:

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

This avoids setting it if you run vim from a terminal, otherwise the rbenv paths would be included twice.

I tried setting the application to run via a terminal, but that didn't help.

查看更多
闹够了就滚
5楼-- · 2019-03-19 05:47

I was not able to resolve this with zsh, and ended up using bash for my vim shell.

Here's what I did:

  1. modified my .zshrc to work with bash
  2. ln -s .zshrc .bashrc
  3. added set shell=bash to my .vimrc file

and now my vim command-line PATH is equal to my zsh shell PATH.

查看更多
登录 后发表回答