GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie finde ich meine Shell-Version mit einem Linux-Befehl?

Es gibt einen Fall, in dem Ihre Shell keinen Befehlszeilenparameter hat, um die Version direkt zu bestimmen. Dieser Fall ist Bourne-Shell. Für die Bourne-Shell würde ich empfehlen, ein Skript zu verwenden:https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh. Das Skript ist ziemlich klein, so dass es kein großes Problem darstellt, es zu überprüfen und zu verstehen, wie es funktioniert. Ich habe dieses Skript in verschiedenen Shells unter Linux und Solaris getestet und es gab immer die Shell-Version für mich.

Einige Beispiele:

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

Dies ist auch die Antwort auf die Frage Bourne-Shell-Version, die als Off-Topic markiert wurde.


Verwenden Sie einfach den Befehl

echo $BASH_VERSION

Es muss Ihnen die Version der Shell geben. BASH_VERSION ist die Umgebungsvariable, die die Version der Shell enthält.


Es hängt davon ab, ob Sie die Version Ihrer Standard-Login-Shell wissen möchten oder die Version der Shell, die Sie gerade ausführen. Sie sind nicht unbedingt gleich.

Für Ihre Standard-Login-Shell, wie die akzeptierte Antwort sagt, $SHELL --version wird wahrscheinlich funktionieren. Die meisten (aber nicht alle) Shells akzeptieren einen --version Möglichkeit. (dash nicht.) Und dies setzt voraus, dass der Wert von $SHELL wurde nicht geändert (es kann triftige Gründe dafür geben).

Für die Shell, die Sie gerade ausführen, wenn es zufällig bash ist Sie können Folgendes eingeben:

echo $BASH_VERSION

Für tcsh :

echo $version

Für zsh :

echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information

Für ksh :

echo $KSH_VERSION

Für fish :

echo $version

Dies setzt wiederum voraus, dass die relevante Variable nicht geändert wurde (es gibt selten einen nicht böswilligen Grund, sie zu ändern).

Insbesondere Bash hat eine Array-Variable $BASH_VERSINFO Das gibt mehr Informationen in einer Form, die einfacher programmgesteuert verarbeitet werden kann. Drucken von $BASH_VERSINFO druckt nur das erste Element; um alle Elemente zu drucken:

echo "${BASH_VERSINFO[@]}"

Dies wird es tun:

$SHELL --version

In meinem Fall lautet die Ausgabe:

zsh 5.0.2 (x86_64-pc-linux-gnu)

Linux
  1. So finden Sie aktive SSH-Verbindungen unter Linux

  2. openSUSE Linux OS-Version – Wie finde ich sie?

  3. So finden Sie heraus, welche Shell Sie unter Linux verwenden

  4. So suchen Sie nach Dateien mit Regex im Linux-Shell-Skript

  5. Wie kann ich die Anzahl der Ordner in einem Laufwerk unter Linux zählen?

So finden Sie die installierte Version von Redhat Linux

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So erstellen Sie Screenshots unter Linux mit Scrot

So finden Sie eine Paketversion in Linux

So finden Sie CPU-Informationen in Linux über die Befehlszeile

So finden Sie die IP-Adresse in der Linux-Befehlszeile