zsh 总是忘记 PATH 变量

zsh 总是忘记 PATH 变量

我在运行 Mavericks 的 MacBook 上的 iTerm 中使用 [oh-my-zsh]。

我将 iTerm 设置为在加载时获取 .zsh 文件,并且大部分情况下都有效。

cd && source .zsh

除非没有。有时,即使在会话中间,它也会忘记我的环境变量和别名。如果发生这种情况,即使是基本的东西mvn也会被“遗忘”。

我不确定这是否是 iTerm、zsh 或 oh-my-zsh 的问题。有什么想法吗?

答案1

根据zsh 用户指南,别名应定义在~/.zshrc

您可能会想到要在启动文件中定义的一些别名; .zshrc 可能是正确的地方。

它还提供了保持清洁的提示~/.zshrc

我只倾向于在交互式 shell 中使用别名,因此我从 .zshrc 定义它们,但如果您更广泛地使用别名,则可能需要使用 .zshenv。事实上,为了保持 .zshrc 整洁,我将所有别名保存在一个名为 .aliasrc 的单独文件中,在 .zshrc 中我有:

if [[ -r ~/.aliasrc ]]; then
   . ~/.aliasrc   
fi

它检查是否存在可读文件 ~/.aliasrc,如果存在,则以与运行正常启动文件完全相同的方式运行它。

因此,您可能想要创建一个名为的文件并~/.aliasrc从您的..source~/.zshrc

相同来源建议环境变量应位于~/.zshenv

放置这些内容的最简单的地方是 .zshenv --- 因此它的名字。环境变量将传递给从 shell 运行的任何程序,因此在 .zlogin 或 .zprofile 中定义它们可能就足够了:但是,为您非交互启动的任何 shell 都不会运行这些程序,并且还有其他可能的问题如果您使用的窗口系统是由 zsh 以外的 shell 启动的,或者根本不运行 shell 启动文件 --- 我必须调整我的系统以使其这样做。所以.zshenv是最安全的地方;定义环境变量并不需要很长时间。其他人无疑会给你完全相反的观点,但那是适合你的人。

答案2

将环境变量放入~/.zshrc文件中,它们将在每个 zsh 会话上自动获取。

相关内容