背景:
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/zsh
或set shell=/bin/sh
有没有人对此有任何暗示?
答案 0 :(得分:2)
当你在终端中启动gvim
时,它会从那里运行的zsh
继承环境。此zsh
会话从其运行的终端和~/.zshenv
中的设置获得了自己的环境。终端反过来从启动它的过程加上一些自己的设置(例如TERM
)获得了它的环境。等等...
如果从其图标启动gvim
,它会从WM启动窗口管理器(Unity?)继承环境。 WM从X获得了它的环境(也许是一些自己的设置)。由于zsh
实例(通常)都没有启动这些进程,因此永远不会加载~/.zshenv
的设置。
如果要为所有用户的流程设置环境变量,则应在~/.pam_environment
中为所有用户/etc/environment
执行此操作。其中的变量在登录时设置,然后由其他进程继承,包括您的窗口管理器。 ~/pam_environment
应该只是KEY=VALUE
语句的列表(即不需要export
,可能会导致错误。)