当我使用 'zsh' 时,'echo $SHELL' 返回 'fish'

Uni*_*nix 1 zsh environment-variables fish

首先我安装了fish然后我想测试zsh所以我安装了它。实际上我正在使用zsh它并且它工作完美(目前):我可以切换主题,启用插件等......

但是当我这样做时:

echo $SHELL
Run Code Online (Sandbox Code Playgroud)

它应该返回/bin/zsh,并且意外地返回/usr/bin/fish

我正在使用 Kubuntu 14.04。可以吗,还是我应该修理它?

hee*_*ayl 5

SHELLalways(好吧,如果没有手动设置)扩展到用户的登录 shell(在 中定义/etc/passwd),不一定是当前使用的 shell 用户。

您可以交叉检查:

grep -Po '^username:.*:\K[^:]+$' /etc/passwd
Run Code Online (Sandbox Code Playgroud)

替换username为您的真实用户名。

如果要更改登录外壳,请修改/etc/passwd或更好地使用chsh:

chsh -s /path/to/shell username
Run Code Online (Sandbox Code Playgroud)

  • @Gerard,改掉手动编辑文件的习惯。摆脱以 root 身份工作的习惯。你不可避免地会发生事故并搞砸你的系统。它发生在每个人身上。以正确的用户身份使用正确的命令 (`chsh`)。当您*暂时*需要提升您的权限时,请习惯使用 `sudo` 命令。 (2认同)