Hay un caso en el que su shell no tiene un parámetro de línea de comando para determinar la versión directamente. Este caso es Bourne shell. Para Bourne Shell recomendaría usar un script:https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh. El guión es bastante pequeño, por lo que no es un gran problema revisarlo y comprender cómo funciona. Probé este script dentro de diferentes shells en Linux y Solaris y siempre me dio la versión de shell.
Algunos ejemplos:
Ubuntu 18.04
$ sh -c './whatshell.sh'
ash (Busybox 1.x)
$ bash -c './whatshell.sh'
bash 4.4.19(1)-release
CentOS 4
$sh -c './whatshell.sh'
bash 3.00.15(1)-release
Solaris 10
~> sh -c './whatshell.sh'
ksh88 Version (..-)11/16/88i (posix octal base)
~> bash -c './whatshell.sh'
bash 4.1.7(3)-release
~> csh -c './whatshell.sh'
SVR4 Bourne shell (SunOS 5 variant)
AIX 6.1
~> sh -c './whatshell.sh'
ksh88 Version (..-)11/16/88f
~> bash -c './whatshell.sh'
bash 4.2.0(1)-release
Esta es también la respuesta a la pregunta sobre la versión de shell de Bourne que se marcó como fuera de tema.
Solo usa el comando
echo $BASH_VERSION
Debe darte la versión de shell. BASH_VERSION es la variable de entorno que contiene la versión de shell.
Depende de si desea conocer la versión de su shell de inicio de sesión predeterminado o la versión del shell que está ejecutando actualmente. No son necesariamente lo mismo.
Para su shell de inicio de sesión predeterminado, como dice la respuesta aceptada, $SHELL --version
es probable que funcione. La mayoría (pero no todas) de las conchas aceptan un --version
opción. (dash
no.) Y esto supone que el valor de $SHELL
no se ha cambiado (puede haber razones válidas para hacerlo).
Para el shell que está ejecutando actualmente, si resulta ser bash
puede escribir:
echo $BASH_VERSION
Para tcsh
:
echo $version
Para zsh
:
echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information
Para ksh
:
echo $KSH_VERSION
Para fish
:
echo $version
Nuevamente, esto asume que la variable relevante no ha sido modificada (rara vez hay una razón no maliciosa para cambiarla).
Bash en particular tiene una variable de matriz $BASH_VERSINFO
que brinda más información en una forma que es más fácil de procesar mediante programación. Imprimiendo $BASH_VERSINFO
solo imprime el primer elemento; para imprimir todos los elementos:
echo "${BASH_VERSINFO[@]}"
Esto lo hará:
$SHELL --version
En mi caso, la salida es:
zsh 5.0.2 (x86_64-pc-linux-gnu)