如何在OS X中获取Bash版本号

时间:2015-03-15 11:26:14

标签: macos bash shell

我正在编写一个需要Bash 4.x的安装脚本。此安装脚本也可以在OSX上使用。我知道在Linux系统上我可以通过检查echo $BASH_VERSION env变量获得Bash版本但是如何在Darwin中获得bash版本?运行bash --version会给出:

GNU bash, version 4.3.33(1)-release (x86_64-apple-darwin14.1.0)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

这是我想要的输出。我希望输出只是版本号,特别是主版本号。

3 个答案:

答案 0 :(得分:11)

echo $BASH_VERSION也适用于Mac OS X:

$ echo $BASH_VERSION
3.2.57(1)-release

如果您需要通过调用路径中的bash来检查是否安装了更新的bash(例如通过Homebrew或MacPorts),您可以从该版本的bash中执行该命令{1}}:

$ bash -c 'echo $BASH_VERSION'
4.3.30(1)-release

要获得该版本的一个组件,有一个arrayBASH_VERSINFO,因此您可以单独访问每个元素。如果您只想要主要版本(这是在我的系统上,我的登录shell是Bash 3,但我安装了Bash 4用于编写脚本):

$ echo ${BASH_VERSINFO[0]}
3
$ bash -c 'echo ${BASH_VERSINFO[0]}'
4

您也可以看到数组的全部内容:

$ echo "${BASH_VERSINFO[@]}"
3 2 57 1 release x86_64-apple-darwin14
$ bash -c 'echo "${BASH_VERSINFO[@]}"'
4 3 30 1 release x86_64-apple-darwin14.0.0

答案 1 :(得分:1)

您可以使用以下一个班轮来提取版本号:

bash --version | awk 'NR==1{print $4}'
  

user @ ubuntu-server:〜$ bash --version | awk'NR == 1 {print $ 4}'

     

4.3.11(1) - 释放

答案 2 :(得分:1)

我似乎能够使用它:

echo ${BASH_VERSINFO[0]}
3
echo ${BASH_VERSINFO[1]}
2
echo ${BASH_VERSINFO[2]}
57

echo $BASH_VERSION
3.2.57(1)-release