为什么 "echo $SHELL" 总是返回 /bin/tcsh

Why is "echo $SHELL" always returning /bin/tcsh

我有以下简单的 shell 脚本:

[test.sh]

#! /bin/bash
echo $SHELL

为什么在以下所有情况下我总是得到 /bin/tsch 的控制台输出?

1) 在终端中,运行 如下:

% ./test.sh

2) 在终端中,运行 如下:

% bash
$ ./test.sh

3) 在终端中,运行 如下:

% bash ./test.sh

正如您可能从 % 游标中看出的那样,终端默认以 tcsh 启动。我很困惑为什么脚本中的 #! /bin/bash 和命令行中的 bash 不影响 $SHELL.

的值

参见手册中的Bash Variables

SHELL

The full pathname to the shell is kept in this environment variable. If it is not set when the shell starts, Bash assigns to it the full pathname of the current user’s login shell.

我的重点。

如果您想要当前 bash 可执行文件的路径,请使用 $BASH。请参阅上面的 link 到文档。