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)