背景:
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 图标运行 gVim,那么我的$HOME/.zshenv
中定义的环境变量都不会在 gVim 中导出我已经将 zsh 设置为 chsh
的默认 shell,gVim 内部和外部的每个echo $SHELL
都会打印/bin/zsh
我已经尝试设置set shell=/bin/zsh
或set shell=/bin/sh
有人对此有任何提示吗?
当您在终端中启动gvim
时,它会继承在那里运行的zsh
的环境。此zsh
会话从运行它的终端和~/.zshenv
中的设置中获得自己的环境。终端反过来从启动它的进程以及一些自己的设置(例如 TERM
(。等等...
如果从其图标启动gvim
,它将从窗口管理器(Unity?(继承环境,因为它由WM启动。WM从X(也许还有一些自己的设置(获得环境。由于这些进程(通常(都不是由zsh
实例启动的,因此永远不会加载~/.zshenv
中的设置。
如果要为所有用户的进程设置环境变量,则应在~/.pam_environment
中执行此操作(/etc/environment
所有用户(。其中的变量在登录时设置,然后将被之后启动的其他进程继承,包括您的窗口管理器。 ~/pam_environment
应该只是KEY=VALUE
语句的列表(即不需要export
,可能会导致错误(。