我安装了homebrew的bash包。当我打开一个新shell时:
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
我想知道我是否应该为可能使用此环境变量的脚本解决这个问题。
发布于 2019-05-14 03:12:50
这意味着你所在的shell是Bash3.2,而bash
指向的是Bash5.0。尝试bash
,然后在新的shell中使用echo $BASH_VERSION
-我猜应该是5.0。要更改您的登录shell,请将/usr/local/bin/bash
添加到/etc/shells
,并使用以下命令更改默认shell
chsh -s /usr/local/bin/bash
sudo chsh -s /usr/local/bin/bash
注销并重新登录后,应更新$BASH_VERSION
。
至于shebang系列,我推荐
#!/usr/bin/env bash
因为它是可移植的,并且将在您的$PATH
中使用第一个Bash。
发布于 2019-05-14 02:39:36
您的登录shell (请参阅echo $SHELL
)可能是/bin/bash
,这就是设置$BASH_VERSION
的shell。如果需要在脚本中使用特定版本,请在#!
行中使用完整路径。
发布于 2019-05-14 03:16:15
我的问题的根源是终端应用程序首选项设置。“命令(完整路径)”设置为/bin/bash
。在将其设置为“默认登录shell”后,echo $BASH_VERSION
报告了我所期望的版本。另一个问题是我愚蠢地在iTerm2中运行bash --version
命令,而不是在终端中。因此,它给出了与终端不同的响应。
https://stackoverflow.com/questions/56117918
复制相似问题