当用户的默认 shell 是 zsh 时,图形登录时不会读取 ~/.zprofile

当用户的默认 shell 是 zsh 时,图形登录时不会读取 ~/.zprofile

我正在使用 Ubuntu 14.04。我曾经chsh将默认 shell 设置为/usr/bin/zsh

~/.zprofile定义了几个环境变量,例如export EDITOR=vim。然而,登录并启动 GNOME 终端后,这些变量并未设置。运行后zsh -l,它们为:

% echo $EDITOR

% zsh -l
% echo $EDITOR
vim
%

因此,显然zsh在登录时运行时,它不知道这是一个登录 shell,因此无法读取.zprofile?这是怎么回事?

据我所知,这个功能直到最近才开始起作用,然后突然就不工作了,所以也许是升级破坏了一些东西?

答案1

因此显然当 zsh 在登录时运行时......

您正在 GNOME 终端中运行zsh,而不是登录。通过切换到 TTY ( CtrlAltF1) 并登录进行比较。

它不知道这是一个登录 shell

术语“登录 shell”含义丰富:

  1. 这是你提到的 shellpasswd条目。基于控制台的登录方法通常会启动此 shell(尝试 TTY、或sudo -lsu -)。在讨论用户帐户时,会使用具有此上下文的“登录 shell”。
  2. 无论 shell 是否是用户的登录 shell(1),都可以将其作为登录 shell 运行。对于大多数 Bourne 类 shell,可以通过-l在手动运行时使用,或在间接启动(通过、、等)-时将其用作参数 0 的第一个字符来获得登录shell。在讨论 shell 的调用时使用此含义。loginsudosu

所以,它不是登录 shell(2),因为我们正在讨论它是如何启动(调用)的。


.zprofile由登录 shell (2) 读取。GNOME 终端默认不运行登录 shell (2)。您必须告诉它这样做

  1. 编辑->个人资料偏好

  2. 选择头衔和命令标签。

  3. 注意以登录 shell 身份运行命令复选框未选中!选中它。

相关内容