我安装了自制软件的 bash 包。当我打开一个新外壳时:
bash --version 给 GNU 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:
chsh -s /usr/local/bin/bash\nsudo chsh -s /usr/local/bin/bash\nRun Code Online (Sandbox Code Playgroud)\n\n注销并再次登录后,$BASH_VERSION应该更新。
至于shebang线,我推荐
\n\n#!/usr/bin/env bash\nRun Code Online (Sandbox Code Playgroud)\n\n因为它是可移植的并且将使用您的$PATH.
我的问题的根源是终端应用程序首选项设置。“命令(完整路径)”设置为/bin/bash。将其设置为“默认登录 shell”后,echo $BASH_VERSION报告了我期望的版本。另一个问题是我愚蠢地bash --version在 iTerm2 中运行命令,而不是终端。因此它给出的响应与终端的响应不同。
您的登录 shell(请参阅echo $SHELL)可能是/bin/bash,这就是唯一的设置 $BASH_VERSION。如果需要在脚本中使用特定版本,请在行中使用完整路径#!。