bash - 将 MacOS 上的/bin/bash 升级到 v5+

我正在尝试为 Kubeflow 安装安装 Anthos Service Mesh (ASM),并且需要/bin/bash 为 v5+。 MacOS 附带的 Bash v3.2.57 不起作用。简单地在“/usr/local/bin”中安装 Bash v5+ 也不起作用,因为安装的几个 shell 脚本指向“/b​​in/bash”,因此我仍然得到旧版本。

我曾希望我可以暂时将新的 bash v5+ 移动到“/bin/bash”,然后在完成 ASM 安装后恢复原状——像这样:

>>>$sudo mv /bin/bash /bin/bash_old
>>>$sudo cp /usr/local/bin/bash /bin
>>>$make install_asm
>>>$sudo mv /bin/bash_old /bin/bash
>>>mv: rename /bin/bash to /bin/bash_old: Operation not permitted

所以这似乎是不可能的

解决这个问题的最佳方法是什么?似乎只是向 .zshrc 添加别名似乎不起作用,希望每当我使用“#!/bin/bash”执行 shellscript 它实际上会调用“/usr/local/bin/bash”:

~/.zshrc:
alias /bin/bash="/usr/local/bin/bash"

>>>$/bin/bash --version
>>>GNU bash, version 5.1.8(1)-release (x86_64-apple-darwin19.6.0)

test_bash.sh:

#!/bin/bash
/bin/bash --version

>>>$sh ./test_bash.sh
>>>GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)

也许有一种方法允许我像上面的示例那样移动二进制文件?

顺便说一句,“/usr/local/bin/bash”已经是一个链接 - 不确定这是否对我正在尝试做的事情有任何影响。

>>>$ll /usr/local/bin/bash
>>>/usr/local/bin/bash -> ../Cellar/bash/5.1.8/bin/bash

热烈欢迎任何提示!

最佳答案

我结合使用了将我的新 shell 位置添加到 /etc/shells 中批准的 shell 列表中,然后更改我的用户的默认 shell:

chsh -s/path/to/new/bash/version

以及确保我的新 bash 位置导出到我的路径的前面而不是结尾,因此查找任何 bash 的命令首先找到:

export PATH=/opt/homebrew/bin/bash:$PATH

到目前为止没有问题,但这是一台新机器,我只是在安装它。如果您在任何 bash 启动脚本中设置了 SHELL 环境变量,请确保也将其更改为新的 bash 二进制文件。

https://stackoverflow.com/questions/67702068/

相关文章:

python - InvalidArgumentError : Expected 'tf.Tenso

c# - Docker 客户端 - Windows 上的独立(可移植)版本

azure - 如何确定 Azure EventGrid 消息传递失败的原因?

python - Pydantic Enum 加载名称而不是值

java - 打开Feign java.lang.NoSuchFieldError : MULTIP

android - 如何更改android studio中的默认主题?

reactjs - 当将组件作为函数调用而不是将其用作标签时,React 没有相同的执行顺序?

javascript - 将 HTML 内容转换为字符串并在文本文件中打印

azure - 如何在 Azure DevOps yaml 管道中设置环境状态

python - 在 Jupyter 中将警告转化为错误