La variable de entorno SHELL todavía apunta a zsh después de usar bash

La variable de entorno SHELL todavía apunta a zsh después de usar bash

Estoy intentando saltar entre zsh y bash.

De forma predeterminada, tengo zsh como mi shell, puedo saberlo escribiendo:

echo $SHELLy lo entiendo/bin/zsh

Sin embargo, quiero abrir Bash, así que escribo /bin/bash; Supongo que estoy en bash ahora, pero si hago eco $SHELLtodavía obtengo/bin/zsh

¿Qué pasa, por favor?

Respuesta1

SHELL es una variable de entorno que se pasa de bash a zsh cuando llamas a zsh. SHELL no es uno de losParámetros establecidos por el Shellen zsh, por lo que su valor permanece intacto.

bash$ SHELL=turtle zsh
zsh$ echo $SHELL
turtle 

Para obtener indicaciones de que estás en un shell zsh, intenta:

echo $ZSH_NAME
echo $0

La SHELLvariable la establece tradicionalmente el loginprograma, "según lo especificado en la base de datos de contraseñas". (Copiado de¿Qué establece la variable de entorno $SHELL?)

Respuesta2

Muchos shells establecen una variable de versión al iniciar.

bashuse BASH_VERSION y zshuse ZSH_VERSION.

Establecer ambas variables en un valor conocido detectará de manera confiable qué shell se inició:

BASH_VERSION=notbash ZSH_VERSION=notzsh sh -c 'echo "$BASH_VERSION $ZSH_VERSION"'

se imprimirá notbash 5.3.1si sh es zsh o 5.0.2(2)-release notzshsi sh es bash.

Lamentablemente, ksh tiene un error de segmentación al usar KSH_VERSION con un valor de cadena.

información relacionada