当我切换 shell 时 $SHELL 变量没有改变

当我切换 shell 时 $SHELL 变量没有改变

我默认使用“zsh”。

但是当我在 zsh shell 中时,我输入“bash”切换到 bash,为什么 $SHELL 变量没有改变?

我可以让屏幕使用在执行“屏幕”命令之前的任何 shell 吗?

zsh % screen
<the shell is zsh>

zsh % bash
bash $ screen
<the shell is still bash, can I make screen to automatically start bash here>

答案1

SHELL 变量(以及一些其他变量,如 HOME 和 USER)由您登录的进程设置。它被设置为 passwd 数据库 (/etc/passwd) 中设置的登录 shell 值。它并不反映您当前正在使用的 shell。

screen 使用 SHELL 变量来确定在 screen 中运行哪个 shell,因此你可以通过运行以下命令来覆盖它:

SHELL=/bin/bash screen

如果您希望 bash 而不是 zsh 作为您的登录 shell,您可以运行chsh(频道安热以您的用户身份运行 ell) 命令。

相关内容