.zshenv 不是来自 ssh 登录?

Way*_*ner 1 login ssh zsh path environment-variables

根据文档

.zshenv除非设置了 -f 选项,否则源自 shell 的所有调用。它应该包含设置命令搜索路径的命令,以及其他重要的环境变量。.zshenv不应包含产生输出的命令或假设 shell 附加到 tty。

好的,很酷,所以我认为通过 ssh 登录被认为是对 zsh 的调用......但也许不是?

wayne@arglefraster ~ 
? echo $PATH                                                                                                   10:01:17
/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
wayne@arglefraster ~ 
? zsh                                                                                                          10:01:20
e%                                                                                                                      
wayne@arglefraster ~ 
? echo $PATH                                                                                                   10:01:24
/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/wayne/.rvm/bin:/home/wayne/.bin:/home/wayne/.local/bin
Run Code Online (Sandbox Code Playgroud)

那些额外的路径位被添加到我的.zshenv文件中。

这是正常的,还是我有什么奇怪的事情发生?我应该将我的 PATH 修改移到别处吗?

Cel*_*ada 5

zshenv确实由 shell 的每个实例读取,但它首先被读取,在其他任何事情之前。您$PATH可能正在zprofile(~/.zprofile/etc/zprofile, ...) 中重置。

zshenv不是设置您的$PATH. 它属于zprofile,它的任务是在登录时设置环境。设置环境变量zshenv意味着在一个会话中运行简单的zsh子 shell 或zsh脚本时,它们会被破坏。

  • 我很困惑。这与[此处](https://unix.stackexchange.com/questions/71253/what-should-shouldnt-go-in-zshenv-zshrc-zlogin-zprofile-zlogout)的答案相反,它说`~/ .zhsenv` 应该有 `$PATH` 。 (4认同)