[英]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.