0

我是来自 Windows 和 Linux 的 macOS 新手。我想使用 bash 并找到了如何在 Catalina 上升级 bash,现在的版本:

GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0),还安装了coreutils。

我正在尝试在 .bashrc 中设置 direxpand (在 *nix 变体中按预期工作): shopt -s direxpand

但是当 .bashrc 被获取时,我得到一个错误:

-bash: shopt: direxpand: invalid shell option name

上网查了几个小时也没找到答案,有大神帮忙吗?

更新 28/07/20 14:08 GMT

有趣的是,在发布之前遵循其他建议,我用 brew 安装了 bash,并且必须将我的 shell 设置/usr/local/bin/bash为终端应用程序才能使用它。

所以输出bash --version

GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0)

但是echo $BASH_VERSION给出:

3.2.57(1)-release

所以有什么不对吗?

此外,运行的输出shopt不显示 direxpand。

格林威治标准时间 28/07/20 20:00 已解决

对于任何有类似问题的人,这就是我发现的。

与 Catalina 一起安装的 bash 不包括我在 linux 中拥有的相同 shell 选项。

完整的解决方案是使用 brew 安装 coreutils 和 bash: brew install coreutils bash

然后将新版本的 bash 添加到 shell: sudo vi /etc/shells添加/usr/local/bin/bash

然后更改您的用户外壳: chsh -s /usr/local/bin/bash

然后在终端首选项 > 常规 > shells open with > command (complete path) 添加新的 bash/usr/local/bin/bash

之后shopt -s确认 direxpand 现在是一个选项,并且我的 .bashrc 按预期工作。

4

1 回答 1

0

不带参数运行时shopt,您可以看到可以设置的可用 shopt 选项。在你的情况下,我希望direxpand它不存在。

shopt 选项的工作direxpand方式取决于 readline 库。如果 bash 在没有 readline 支持的情况下编译,则该选项将不存在。我希望你就是这种情况。

一种选择是自己编译 bash。这个问题的公认答案将向您展示如何自己编译 bash。您可以--enable-readline在配置中添加选项以强制打开 readline 支持。

注意:自己编译可能需要您在操作系统中获取 readline 库。我希望 bash 是在没有它的情况下编译的,因为它不容易获得,但这是你自己弄清楚的。

于 2020-07-28T11:18:49.613 回答