Bajo csh family shells, obtendrás tu shell en ejecución con este comando:
% echo $shell
Si csh se ejecutó, directa o indirectamente, desde un shell de la familia Bourne a la que se exportó su variable SHELL, siendo este último el caso común, la variable SHELL permanecerá intacta, por lo que echo $SHELL seguirá mostrando su valor anterior lo que sería confuso.
Esto es lo que te está sucediendo, uno de los procesos principales de tu sesión tcsh fue bash . Si bash se inicia con la variable SHELL sin establecer, la establece en la ruta a bash , a pesar de lo que indica la documentación. Tenga en cuenta que lanzar una nueva familia de shell Bourne no habría cambiado la variable SHELL si se configurara. Definitivamente, SHELL no es la forma de identificar qué shell está ejecutando, solo para saber qué shell es su shell predeterminado en un entorno POSIX.
Una forma portátil de saber qué shell se está ejecutando actualmente sería:
ps -o comm= -p $$
Sin embargo, el último comando asume que $$ se establece en el PID del proceso actual, que desafortunadamente, algunos shells exóticos como fish se rompen. Una forma aún más portátil que soluciona este problema es:
env sh -c 'basename $(ps -o comm= -p $(ps -o ppid= -p $$))'