GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso trovare la mia versione della shell usando un comando Linux?

C'è un caso in cui la tua shell non ha un parametro della riga di comando per determinare direttamente la versione. Questo caso è Bourne shell. Per Bourne shell consiglierei di utilizzare uno script:https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh. Lo script è piuttosto piccolo, quindi non è un grosso problema rivederlo e capire come funziona. Ho testato questo script all'interno di diverse shell su Linux e Solaris e mi ha sempre fornito la versione della shell.

Alcuni esempi:

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

Questa è anche la risposta alla domanda sulla versione della shell Bourne che è stata contrassegnata come fuori tema.


Basta usare il comando

echo $BASH_VERSION

Deve darti la versione di shell. BASH_VERSION è la variabile d'ambiente che contiene la versione della shell.


Dipende se si desidera conoscere la versione della shell di login predefinita o la versione della shell attualmente in esecuzione. Non sono necessariamente gli stessi.

Per la tua shell di login predefinita, come dice la risposta accettata, $SHELL --version è probabile che funzioni. La maggior parte delle shell (ma non tutte) accetta un --version opzione. (dash non.) E questo presuppone che il valore di $SHELL non è stato modificato (possono esserci validi motivi per farlo).

Per la shell attualmente in esecuzione, se capita che sia bash puoi digitare:

echo $BASH_VERSION

Per tcsh :

echo $version

Per zsh :

echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information

Per ksh :

echo $KSH_VERSION

Per fish :

echo $version

Di nuovo, questo presuppone che la variabile rilevante non sia stata modificata (raramente c'è un motivo non dannoso per cambiarla).

Bash in particolare ha una variabile array $BASH_VERSINFO che fornisce più informazioni in un formato più facile da elaborare a livello di codice. Stampa $BASH_VERSINFO stampa solo il primo elemento; per stampare tutti gli elementi:

echo "${BASH_VERSINFO[@]}"

Questo lo farà:

$SHELL --version

Nel mio caso, l'output è:

zsh 5.0.2 (x86_64-pc-linux-gnu)

Linux
  1. Versione del sistema operativo Linux openSUSE - Come trovarlo?

  2. Come trovare quale shell stai usando su Linux

  3. Come riavviare Linux utilizzando la riga di comando

  4. Come uccidere un processo su Linux usando il comando?

  5. Come cercare i file usando regex nello script della shell linux

Come trovare la versione di Redhat Linux installata

Come eseguire il comando / script della shell di Linux in background

Come fare screenshot su Linux usando Scrot

Come trovare una versione del pacchetto in Linux

Come trovare informazioni sulla CPU in Linux utilizzando la riga di comando

Come trovare l'indirizzo IP nella riga di comando di Linux