将MacOS上的/bin/bash升级到v5+;
我正在尝试为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安装后恢复,如下所示:将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
>>>$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