确认您处于 Z shell,这是您的登录 shell

确认您处于 Z shell,这是您的登录 shell

根据文档

.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

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

这是正常现象,还是我有什么奇怪的事情发生?我应该将 PATH 修改移到其他地方吗?

答案1

zshenv确实被 shell 的每个实例读取,但它被读取第一的,首先。您$PATH可能会在zprofile(~/.zprofile/etc/zprofile, ...) 中重置。

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

答案2

确认您处于 Z shell,这是您的登录 shell

.zshenv应该在您 ssh 进入计算机时运行。如果不运行的话

  • 当您使用以下命令 ssh 进入计算机时,检查您是否处于 Z shell 中echo $SHELL
  • 如果您不在 Z shell 中,请运行zsh它将显式启动 Z shell 并确认您的.zshenv工作。如果是,请运行exit以退出 Z shell。
  • 如果该文件有效,请更改您的登录 shell,
    • 通过 ssh 登录时
    • 运行command -v zsh一下你就知道 Z shell 在哪里了,如果没有返回任何内容,你需要安装 Z shell
    • 然后运行chsh并为其提供 Z shell 的路径
    • 注销并使用 ssh 重新登录。

相关内容