如何找到我正在运行的bash的版本?


161

(学习bash)我试图检查bash版本,所以输入了/bin/bash -v

这会将大量文本输出到屏幕上(.bashrc的内容以及从中获取的其他文件)。

由于该命令,我是否可以搞砸(例如覆盖一些配置文件/设置不正确的环境变量等)?

我也找不到有关该-v开关用途的文档。


如果您运行bash -v了该程序,则在激活了详细模式的情况下调用了一个新的bash shell,因此您将看到详细的输出以获取其他命令(至少会看到printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}")。要结束冗长,请键入exit命令-您将回到原始的非冗长的bash shell(或您之前所在的任何shell)。
ADTC

Answers:


165

-vbash 的参数表示详细信息,指示bash打印出尽可能多的有关其操作的信息。启动时,它将打印出正在读取的所有配置。

要打印出bash的版本信息,请使用bash --version


大!我还找到了bash的开关列表
2011年

33
另外,如果您已经在运行bash shell,则可以输出特殊BASH_VERSION变量的内容。echo "$BASH_VERSION"。还有一个特殊的数组(BASH_VERSINFO),在单独的元素中包含每个版本号。if ((BASH_VERSINFO[0] < 4)); then echo "Sorry, you need at least bash-4.0 to run this script." >&2; exit 1; fi
盖尔哈2011年

2
错字,应该是类似[ "${BASH_VERSINFO}" -lt 4 ][ "${BASH_VERSINFO[0]}" -lt 4 ]
bufh 2015年

太冗长,使用askubuntu.com/a/899187/1004
sorin

这种方法的问题在于,您不能百分百确定在登录时更改了任何环境变量的任何脚本,符号链接或任何其他种类的混乱配置。正如我在下面回答的那样,Ctrl + x Ctrl + v将向您确切显示您当前正在运行的bash版本,而不管任何环境变量如何。
vegatripy

98

在运行bash(例如from gnome-terminal)时,您可以检查BASH_VERSION环境变量的值。

$ echo $BASH_VERSION
4.2.37(1)-release

如果该值为空,则您未在运行bash


11
这比只运行更好bash --version,因为它确认您当前正在运行bash,而不仅仅是确认您的系统上已安装bash。
Flimm

1
+1 bash --version不会显示您当前正在使用的bash。
gabeio 2014年

请注意:一组BASH_VERSION并不能保证你正在运行bashexport BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell',所以$BASH_VERSION可以在设定csh以及
蒂诺

@Tino很好,您可以执行一个$SHELL --version,但是再次SHELL可能会被覆盖(并且所有shell不支持--version标志)。
bufh

37

有一个关键的快捷方式指示当前的shell信息显示:

Ctrl+ x Ctrl+v

man bash

   display-shell-version (C-x C-v)
          Display version information about the current instance of bash.

如果您弄乱了环境变量,这是最佳选择。


8

不,一切都很好。来自man bash

   --verbose
          Equivalent to  -v.

只是没有像往常一样沉默。尝试

--version 

代替。


1

通常--version可能会给您太多多行样板,所以我正在使用的是

bash -c 'echo $BASH_VERSION'


4
@wjandrea这与PawełNadolski的答案不同。它在新的bashshell中运行命令。一种有用的方法是,它不需要当前使用的shell bash。另一个问题是,即使在中bash,也可以(尽管不好)将其设置BASH_VERSION为其他值。它甚至可以作为环境变量导出。但是即使在运行后export BASH_VERSION=foobar,此处给出的方法仍然有效,因为新的bash外壳程序会BASH_VERSION在执行读取它的参数扩展之前自动重置其自身。
伊莱亚·卡根

@EliahKagan在我从16.04.1 iso文件安装的更新和升级的已安装16.04 LTS系统中bash --version说,4.3.48(1)-release然后apt-cache policy bash4.3-14ubuntu1.2,我已经检查了可执行bash文件是否来自软件包“ bash”。应该如何解释?存在与相似的不匹配usb-creator-gtk,在这种情况下apt-cache输出正确。-我们是否可以得出结论,较高的版本号是正确的版本号(而有人忘记更新另一个版本号)?
sudodus

1
@sudodus程序的版本号可能与它所附带的APT软件包的版本号不同。这就是您在此处看到的。4.3.48...是Bash 4.3-14...的版本,是bash软件包的版本。
wjandrea

@EliahKagan我之前忘了提及,感谢您纠正我!我很感谢您的知识。
wjandrea

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.