GNU/Linux >> Znalost Linux >  >> Linux

Jak najdu svou verzi shellu pomocí příkazu Linux?

Existuje případ, kdy váš shell nemá parametr příkazového řádku pro přímé určení verze. Tento případ je Bourne shell. Pro Bourne shell bych doporučil použít skript:https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh. Skript je docela malý, takže není velký problém si ho prohlédnout a pochopit, jak funguje. Testoval jsem tento skript v různých shellech na Linuxu a Solarisu a vždy mi poskytl verzi shellu.

Několik příkladů:

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

Toto je také odpověď na otázku verze Bourne shellu, která byla označena jako mimo téma.


Stačí použít příkaz

echo $BASH_VERSION

Musí vám poskytnout verzi shellu. BASH_VERSION je proměnná prostředí, která obsahuje verzi shellu.


Záleží na tom, zda chcete znát verzi výchozího přihlašovacího shellu nebo verzi shellu, který aktuálně používáte. Nejsou nutně stejné.

Pro váš výchozí přihlašovací shell, jak říká přijatá odpověď, $SHELL --version pravděpodobně bude fungovat. Většina (ale ne všechny) shelly přijímá --version volba. (dash není.) A to předpokládá, že hodnota $SHELL nebyl změněn (k tomu mohou existovat pádné důvody).

Pro shell, který právě používáte, pokud je to náhodou bash můžete napsat:

echo $BASH_VERSION

Pro tcsh :

echo $version

Pro zsh :

echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information

Pro ksh :

echo $KSH_VERSION

Pro fish :

echo $version

Opět to předpokládá, že příslušná proměnná nebyla změněna (zřídka existuje nějaký neškodlivý důvod ji měnit).

Zejména Bash má proměnnou pole $BASH_VERSINFO který poskytuje více informací ve formě, kterou lze programově snáze zpracovat. Tisk $BASH_VERSINFO vytiskne pouze první prvek; pro tisk všech prvků:

echo "${BASH_VERSINFO[@]}"

Udělá to:

$SHELL --version

V mém případě je výstup:

zsh 5.0.2 (x86_64-pc-linux-gnu)

Linux
  1. Jak najít verzi balíčku v Linuxu

  2. Jak zabít proces v Linuxu pomocí příkazu?

  3. Jak načíst verzi Java pomocí jednořádkového příkazu v Linuxu

  1. Jak mohu spočítat počet složek na jednotce pomocí Linuxu?

  2. Jak zjistím, jakou verzi Linuxu používám?

  3. Jak mohu vytisknout obsah místo názvu souboru pomocí příkazu linux find?

  1. Jak najít aktivní připojení SSH v systému Linux

  2. openSUSE verze operačního systému Linux – jak ji najít?

  3. Jak zobrazit skryté soubory pomocí příkazu Linux `find`