La variable de entorno SHELL sigue devolviendo el valor del shell predeterminado

La variable de entorno SHELL sigue devolviendo el valor del shell predeterminado

Estoy usando un emulador de terminal con bash como shell predeterminado, luego imprimí el valor de la variable de entorno SHELL para imprimir el shell actual y lo hizo, pero cuando entro en otro shell, es decir, zshell, sigue devolviendo el primer valor del uno predeterminado.
¿Cómo hacer que imprima el valor del shell actual en el que resido?

$ echo $SHELL 
/bin/bash

$ zsh 
unixnode% 

$ unixnode% echo $SHELL 
/bin/bash

Respuesta1

Cuando inicia sesión con un shell de inicio de sesión, la variable de shell se asigna a ese shell.
Siempre que utilice un shell sin inicio de sesión, como simplemente ejecutar zsh desde la sesión actual del shell de inicio de sesión, el valor de la variable Shell seguirá siendo el mismo, pero si desea cambiarlo al otro shell, deberá hacerlo. tendrá que cerrar sesión y volver a iniciar sesión en el otro shell.

Respuesta2

Cómo llegar a imprimir el valor del shell actual en el que resido

Depende del caparazón. Para shells de tipo POSIX, utilice$0

$ bash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
bash

$ /bin/bash -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
/bin/bash

$ zsh -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
zsh

$ ksh  -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
ksh

$ dash  -c 'echo $SHELL; echo $0'
/usr/local/bin/fish
dash

El manual de bash tieneesto para decir sobre $SHELL

Algunas cosas más interesantes sobre cómo diferentes conchasinicializar$CÁSCARA

$ unset SHELL; bash -c 'echo $SHELL'
/usr/local/bin/fish

$ unset SHELL; ksh -c 'echo $SHELL'
/bin/sh

$ unset SHELL; zsh -c 'echo $SHELL'


$ unset SHELL; dash -c 'echo $SHELL'


$ unset SHELL; fish -c 'echo $SHELL'


$ unset SHELL; tcsh -c 'echo $SHELL'
SHELL: Undefined variable.

información relacionada