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

将MacOS上的/bin/bash升级到v5+;,bash,macos,kubeflow,google-anthos,Bash,Macos,Kubeflow,Google Anthos,我正在尝试为Kubeflow安装安装Anthos Service Mesh(ASM),并且需要将/bin/bash设置为v5+。MacOS附带Bash v3.2.57,但它不起作用。简单地在“/usr/local/bin”中安装bashv5+也不起作用,因为安装的多个shell脚本指向“/bin/Bash”,因此我仍然得到了旧版本 我曾希望我可以暂时将新的bash v5+移动到“/bin/bash”,然后在完成ASM安装后恢复,如下所示: >>>$sudo mv /bin/ba

我正在尝试为Kubeflow安装安装Anthos Service Mesh(ASM),并且需要将/bin/bash设置为v5+。MacOS附带Bash v3.2.57,但它不起作用。简单地在“/usr/local/bin”中安装bashv5+也不起作用,因为安装的多个shell脚本指向“/bin/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
所以这似乎是不可能的

最好的办法是什么?仅仅在.zshrc中添加一个别名似乎不起作用,希望每当我执行带有“#!/bin/bash”的shell脚本时,它实际上会调用“/usr/local/bin/bash”:

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

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

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

欢迎任何提示

@KamilCuk如果Shebang说
/bin/bash
那就没用了传统的方法是建立一个最小的
chroot
,你可以完全控制
/bin
;但这些设置有点麻烦,我不确定它在macOS上的工作情况如何(尽管它似乎有可用的
/usr/sbin/chroot
)。也许还可以查看Docker,但我猜如果您使用Kubernetes,您已经非常了解Docker。/bin在MacOS中是只读的:您可能更容易更改ASM:change
#中的安装脚本/bin/bash
#/usr/bin/env-bash
,这样/usr/local/bin/bash可以比/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)

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