从桌面启动时 gvim 管道不读取 zshrc

从桌面启动时 gvim 管道不读取 zshrc

我使用它zsh作为我的默认 shell 并使用它.zshrc来修改我的环境变量。当我gvim从终端启动时,一切都很好,但是如果我使用桌面图标启动 gvim,我的环境变量就会消失。 (只是清除它:shell可以,但:!命令不行)

我尝试将环境变量移至,.zprofile但没有成功。如果我将它们移至,它就可以工作,.profile但我再次需要复制我的变量,因为zsh没有读取.profile

我对 shell 的内部处理不太了解gvim。是否可以读取.zshrc.zprofile用于:!命令?

笔记:我正在使用一个ubuntu系统。任何涉及操作系统的优雅解决方案也是受欢迎的。

答案1

用于.zshrc修改我的环境变量

这就是你的问题的根本原因。.zshrc是交互式 shell 会话的启动文件。用它来设置 shell 设置,而不是设置环境变量。环境变量通常在会话文件中设置,例如.profile.看.bashrc 的替代方案(适用的.bashrc也适用.zshrc)。

如果 zsh 是您的登录 shell,它不会读取~/.profile,而是读取~/.zprofile.请注意,即使 zsh 是交互式 shell,它也不一定是您的登录 shell:您可以将/bin/sh其用作登录 shell 并SHELL=$(command -v zsh)在您的环境中进行设置,以便终端模拟器等运行 zsh。既然您说定义环境变量不起作用~/.zprofile,那么这可能就是您的系统已经设置的方式,但如果没有更准确的信息,很难判断“不起作用”。

如果您的登录 shell 是 zsh,请将以下行放入您的~/.zprofileto read中.profile

emulate ksh -c '. ~/.profile'

通常,您可以使用普通的. ~/.profile,因为 zsh 和 Bourne 风格的 shell 之间的不兼容性不太可能出现在.profile.

答案2

如果它不是交互式或登录 shell,我认为您只能使用~/.zshenv.以下内容来自“启动/关闭文件”部分zshall(1)

Commands are then read from $ZDOTDIR/.zshenv.  If the shell is a login
shell,  commands  are  read  from  /etc/zsh/zprofile  and  then $ZDOT-
DIR/.zprofile.  Then, if the shell is interactive, commands  are  read
from  /etc/zsh/zshrc  and then $ZDOTDIR/.zshrc. Finally, if the shell
is a login shell, /etc/zsh/zlogin and $ZDOTDIR/.zlogin are read.

相关内容