GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je trouver ma version de shell à l'aide d'une commande Linux ?

Il y a un cas où votre shell n'a pas de paramètre de ligne de commande pour déterminer directement la version. Ce cas est Bourne shell. Pour le shell Bourne, je recommanderais d'utiliser un script :https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh. Le script est assez petit pour que ce ne soit pas un gros problème de le revoir et de comprendre comment il fonctionne. J'ai testé ce script dans différents shells sous Linux et Solaris et il m'a toujours donné la version du shell.

Quelques exemples :

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

Il s'agit également de réponses à la question sur la version du shell Bourne qui a été marquée comme hors sujet.


Utilisez simplement la commande

echo $BASH_VERSION

Il doit vous donner la version du shell. BASH_VERSION est la variable d'environnement qui contient la version du shell.


Cela dépend si vous voulez connaître la version de votre shell de connexion par défaut ou la version du shell que vous utilisez actuellement. Ce ne sont pas nécessairement les mêmes.

Pour votre shell de connexion par défaut, comme le dit la réponse acceptée, $SHELL --version est susceptible de fonctionner. La plupart (mais pas tous) les shells acceptent un --version option. (dash ne le fait pas.) Et cela suppose que la valeur de $SHELL n'a pas été modifié (il peut y avoir des raisons valables de le faire).

Pour le shell que vous utilisez actuellement, s'il s'agit de bash vous pouvez taper :

echo $BASH_VERSION

Pour tcsh :

echo $version

Pour zsh :

echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information

Pour ksh :

echo $KSH_VERSION

Pour fish :

echo $version

Encore une fois, cela suppose que la variable pertinente n'a pas été modifiée (il y a rarement une raison non malveillante de la changer).

Bash en particulier a une variable tableau $BASH_VERSINFO qui donne plus d'informations sous une forme plus facile à traiter par programmation. Impression $BASH_VERSINFO n'imprime que le premier élément ; pour imprimer tous les éléments :

echo "${BASH_VERSINFO[@]}"

Cela le fera :

$SHELL --version

Dans mon cas, la sortie est :

zsh 5.0.2 (x86_64-pc-linux-gnu)

Linux
  1. Comment trouver le shell que vous utilisez sous Linux

  2. Comment tuer un processus sous Linux en utilisant la commande ?

  3. Comment rechercher des fichiers à l'aide de regex dans le script shell Linux

  4. Comment puis-je compter le nombre de dossiers dans un lecteur sous Linux ?

  5. À l'aide de la commande cp dans le shell Linux, comment copier un répertoire entier dans un autre répertoire ?

Comment trouver la version de Redhat Linux installée

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment faire des captures d'écran sous Linux avec Scrot

Comment trouver des informations sur le processeur sous Linux à l'aide de la ligne de commande

Comment trouver une adresse IP dans la ligne de commande Linux

Comment puis-je imprimer le contenu au lieu du nom de fichier à l'aide de la commande linux find ?