$SHELL 是否存储 Linux 中默认 shell 的路径?

Laz*_*zer 4 shell bash rhel csh

我的管理员说我的默认 shell 设置为bash,但是

$ echo $SHELL
/bin/csh
$
Run Code Online (Sandbox Code Playgroud)

默认 shell 是否与SHELL变量有关?是不是,这个变量是干什么用的?

Tok*_*Tok 5

这不是 100% 正确的。例如:

$> echo $SHELL
/bin/bash
$> /bin/ksh
$] echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)

$SHELL 包含会话的父 shell,通常是您的登录 shell,由 /etc/passwd 中的用户条目指示。更清楚的是, $SHELL 是您当前会话产生的父 shell。在我的示例中,当前的 shell Korn 在技术上是在 BASH 中运行的,这就是 $SHELL 未修改的原因。

显然,这几乎完全是语义上的区别,但是,不要陷入相信所见即所得的陷阱。