我正在使用 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”含义丰富:
- 这是你提到的 shell
passwd
条目。基于控制台的登录方法通常会启动此 shell(尝试 TTY、或sudo -l
或su -
)。在讨论用户帐户时,会使用具有此上下文的“登录 shell”。 - 无论 shell 是否是用户的登录 shell(1),都可以将其作为登录 shell 运行。对于大多数 Bourne 类 shell,可以通过
-l
在手动运行时使用,或在间接启动(通过、、等)-
时将其用作参数 0 的第一个字符来获得登录shell。在讨论 shell 的调用时使用此含义。login
sudo
su
所以,它不是登录 shell(2),因为我们正在讨论它是如何启动(调用)的。
.zprofile
由登录 shell (2) 读取。GNOME 终端默认不运行登录 shell (2)。您必须告诉它这样做:
去编辑->个人资料偏好。
选择头衔和命令标签。
注意以登录 shell 身份运行命令复选框未选中!选中它。