BASH_VERSINFO与bash --version显示的不同

qua*_*ato 1 bash

我试过复制/usr/local/Cellar/bash/4.4.19/bin/bash到/usr/local/bin/bash因为which bash节目/usr/local/bin/bash.

~/cat /etc/shells
/usr/local/Cellar/bash/4.4.19/bin/bash

~/bash --version
GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin17.3.0)
Copyright (C) 2016 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.


echo $BASH_VERSINFO
3
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Cha*_*ffy 5

bash --version显示从PATH启动新shell时将运行的版本.

因此,此版本与安装位置相关联which bash(如果未通过别名/函数/等修改),或type bash(更准确地说),或者与用于运行带有#!/usr/bin/env bashshebang 的脚本的shell相关联.


$BASH_VERSINFO并$BASH_VERSION显示正在运行的版本.

因此,如果你在一个带有#!/bin/bashshebang 的脚本,或者一个用户的密码数据库指定/bin/bash为shell 的交互式shell脚本/usr/local/bin/bash,那么PATH中较早的(或任何其他位置)与当前的目的无关,不是 -从PATH shell实例启动.


要从脚本中的PATH启动shell,请将shebang更改为#!/usr/bin/env bash.要从交互式会话启动指定的shell,请使用chsh更新帐户的设置.