为什么我的vim命令行路径与我的shell PATH不同?

时间:2012-11-15 17:24:12

标签: vim command-line 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

我希望它们是一样的。他们为什么不同?

如果它有所不同,这是我的shell,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 root@apple.com


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

(Mountain Lion)

3 个答案:

答案 0 :(得分:11)

  

这是由known problem引入的   OS X 10.5 Leopard中的Apple。

     

如果您正在使用Bash或Zsh并且正在使用非交互式shell,那么   受到影响。

     

正在运行sudo chmod ugo-x /usr/libexec/path_helper会解决您的问题,   但你应该看一下这篇文章,看看为什么。

来自this SO answer

答案 1 :(得分:3)

在SO和SU上有许多类似的问题。

你的shell执行不同的* rc文件,具体取决于它在启动时给出的参数。因此,您需要设置Vim,以便使用正确的参数启动您的shell。

以下有助于bash,我几乎可以肯定zsh中有类似的标志。

set shell=bash\ -i

请参阅$ man zsh了解正确的标志和正确的执行顺序。

答案 2 :(得分:-1)

我不使用mac或zsh(我在linux上),但是当我从MATE菜单运行gvim时遇到了这个问题。

我通过将其添加到我的.vimrc来解决它:

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

如果从终端运行vim,这可以避免设置它,否则rbenv路径将被包含两次。

我尝试将应用程序设置为通过终端运行,但这没有帮助。