GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo encontrar mi versión de shell usando un comando de Linux?

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)

Linux
  1. Cómo encontrar una versión de paquete en Linux

  2. Versión del sistema operativo openSUSE Linux:¿cómo encontrarlo?

  3. Cómo encontrar qué Shell está utilizando en Linux

  4. Cómo obtener la versión de Java usando un comando de una sola línea en Linux

  5. Cómo ver archivos ocultos usando el comando `buscar` de Linux

Cómo encontrar la versión de Redhat Linux instalada

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo tomar capturas de pantalla en Linux usando Scrot

Cómo encontrar información de la CPU en Linux usando la línea de comandos

Cómo encontrar la dirección IP en la línea de comandos de Linux

¿Cómo puedo imprimir el contenido en lugar del nombre del archivo usando el comando de búsqueda de Linux?