簡體   English   中英

如何使用 Linux 命令找到我的 shell 版本?

[英]How can I find my shell version using a Linux command?

我想使用 Linux 命令了解我的 shell 版本。 我嘗試了以下命令,但它顯示了我所在的 shell 的類型。

命令:

echo $SHELL

結果:

/bin/bash

這將做到:

$SHELL --version

在我的情況下,輸出是:

zsh 5.0.2 (x86_64-pc-linux-gnu)

這取決於您是想知道默認登錄 shell 的版本,還是當前運行的 shell 版本。 它們不一定相同。

對於您的默認登錄 shell,正如公認的答案所說, $SHELL --version可能會起作用。 大多數(但不是全部)shell 接受--version選項。 dash沒有。)而且這假設$SHELL的值沒有改變(這樣做可能有正當的理由)。

對於您當前正在運行的 shell,如果它恰好是bash您可以鍵入:

echo $BASH_VERSION

對於tcsh

echo $version

對於zsh

echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information

對於ksh

echo $KSH_VERSION

對於fish

echo $version

同樣,這假設相關變量沒有被修改(很少有任何非惡意的理由來改變它)。

特別是 Bash 有一個數組變量$BASH_VERSINFO ,它以更易於編程處理的形式提供更多信息。 打印$BASH_VERSINFO只打印第一個元素; 打印所有元素:

echo "${BASH_VERSINFO[@]}"

有一種情況,您的 shell 沒有命令行參數來直接確定版本。 這個案例是Bourne shell。 對於 Bourne shell,我建議使用腳本: https : //www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh 該腳本非常小,因此查看它並了解它是如何工作的並不是什么大問題。 我已經在 Linux 和 Solaris 上的不同 shell 中測試了這個腳本,它總是為我提供 shell 版本。

一些例子:

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

這也是被標記為題外話的Bourne shell version問題的答案。

只需使用命令

回聲 $BASH_VERSION

它必須給你 shell 的版本。 BASH_VERSION 是包含 shell 版本的環境變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM