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 $$))'