![zsh 总是忘记 PATH 变量](https://linux22.com/image/63214/zsh%20%E6%80%BB%E6%98%AF%E5%BF%98%E8%AE%B0%20PATH%20%E5%8F%98%E9%87%8F.png)
我在运行 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 会话上自动获取。