11

例如,

$ 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 版本和 OS 版本:

$ 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

4 回答 4

12

这是Apple 在 OS X 10.5 Leopard 中引入的已知问题。

如果您使用的是 Bash 或 Zsh 并且使用的是非交互式 shell,则会受到影响。

跑步sudo chmod ugo-x /usr/libexec/path_helper会让你恢复健康,但你应该看看这篇文章,看看为什么。

这个答案

于 2013-10-22T14:48:31.323 回答
4

stackoverflow和stackexchange上有很多类似的问题。

您的 shell 根据启动时给出的参数执行不同的 *rc 文件。因此,您需要设置 Vim 以便它使用正确的参数启动您的 shell。

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

set shell=bash\ -i

查看$ man zsh正确的标志和正确的执行顺序。

于 2012-11-15T18:16:05.583 回答
3

我无法用 zsh 解决这个问题,最终在我的 vim shell 中使用了 bash。

这是我所做的:

  1. 修改我.zshrc的工作bash
  2. ln -s .zshrc .bashrc
  3. 添加set shell=bash到我的.vimrc文件中

现在我的 vim 命令行 PATH 等于我的 zsh shell PATH。

于 2012-11-19T19:18:30.237 回答
-1

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

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

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

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

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

于 2015-02-15T08:07:14.500 回答