$BASH_VERSION 在 macOS 上报告旧版本的 bash,这是一个应该修复的问题吗?

Ste*_*ieD 8 macos bash

我安装了自制软件的 bash 包。当我打开一个新外壳时:

bash --versionGNU bash, version 5.0.7(1)-release (x86_64-apple-darwin18.5.0)

which bash/usr/local/bin/bash按预期给出。

但:

echo $BASH_VERSION 产量 3.2.57(1)-release

我想知道这是否是我应该为可能使用此环境变量的脚本解决的问题。

Ben*_* W. 11

这意味着您所在的 shell 是 Bash 3.2,但bash指向 Bash 5.0。尝试bash然后在新的 shell 中echo $BASH_VERSION\xe2\x80\x93 我猜它会是 5.0。要更改您的登录 shell,请添加/usr/local/bin/bash/etc/shells更改默认 shell:

\n\n
chsh -s /usr/local/bin/bash\nsudo chsh -s /usr/local/bin/bash\n
Run Code Online (Sandbox Code Playgroud)\n\n

注销并再次登录后,$BASH_VERSION应该更新。

\n\n

至于shebang线,我推荐

\n\n
#!/usr/bin/env bash\n
Run Code Online (Sandbox Code Playgroud)\n\n

因为它是可移植的并且将使用您的$PATH.

\n


Ste*_*ieD 8

我的问题的根源是终端应用程序首选项设置。“命令(完整路径)”设置为/bin/bash。将其设置为“默认登录 shell”后,echo $BASH_VERSION报告了我期望的版本。另一个问题是我愚蠢地bash --version在 iTerm2 中运行命令,而不是终端。因此它给出的响应与终端的响应不同。


jam*_*nan 2

您的登录 shell(请参阅echo $SHELL)可能是/bin/bash,这就是唯一的设置 $BASH_VERSION。如果需要在脚本中使用特定版本,请在行中使用完整路径#!

  • 好的,问题出在终端应用程序的首选项设置上。“命令(完整路径)”设置为“/bin/bash”。 (2认同)