繁体   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