Estoy intentando saltar entre zsh y bash.
De forma predeterminada, tengo zsh como mi shell, puedo saberlo escribiendo:
echo $SHELL
y lo entiendo/bin/zsh
Sin embargo, quiero abrir Bash, así que escribo /bin/bash
; Supongo que estoy en bash ahora, pero si hago eco $SHELL
todaví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 SHELL
variable la establece tradicionalmente el login
programa, "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.
bash
use BASH_VERSION y zsh
use 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.1
si sh es zsh o 5.0.2(2)-release notzsh
si sh es bash.
Lamentablemente, ksh tiene un error de segmentación al usar KSH_VERSION con un valor de cadena.