Vim没有使用oh-my-zsh的环境变量

时间:2015-03-18 13:34:57

标签: ubuntu vim zsh zshrc oh-my-zsh

背景:

Ubuntu 14.10 x64
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 20 2014 16:09:34)
Patch incluse: 1-273
Last oh-my-zsh version (master)

问题:

如果我从命令行(例如终结符)运行gVim,那么我$HOME/.zshenv中导出的环境变量被正确设置为gVim(:echo $SOMETHINGDEFINEDINZSHENV有效,:!echo $SOMETHINGDEFINEDINZSHENV也有效) 如果我从Ubuntu Icon运行gVim,那么我的$HOME/.zshenv中定义的环境变量不会在gVim中导出 我已将zsh设置为chsh的默认shell,每个echo $SHELL内外gVim都打印/bin/zsh 我已尝试设置set shell=/bin/zshset shell=/bin/sh

有没有人对此有任何暗示?

1 个答案:

答案 0 :(得分:2)

当你在终端中启动gvim时,它会从那里运行的zsh继承环境。此zsh会话从其运行的终端和~/.zshenv中的设置获得了自己的环境。终端反过来从启动它的过程加上一些自己的设置(例如TERM)获得了它的环境。等等...

如果从其图标启动gvim,它会从WM启动窗口管理器(Unity?)继承环境。 WM从X获得了它的环境(也许是一些自己的设置)。由于zsh实例(通常)都没有启动这些进程,因此永远不会加载~/.zshenv的设置。

如果要为所有用户的流程设置环境变量,则应在~/.pam_environment中为所有用户/etc/environment执行此操作。其中的变量在登录时设置,然后由其他进程继承,包括您的窗口管理器。 ~/pam_environment应该只是KEY=VALUE语句的列表(即不需要export,可能会导致错误。)