我正在尝试安装用于Kubeflow安装的Anthos Service Mesh(ASM(,并且需要/bin/bash为v5+。MacOS附带的Bash v3.2.57不起作用。简单地将Bash v5+安装在"/usr/local/bin";也不起作用,因为安装的几个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
>>>mv: rename /bin/bash to /bin/bash_old: Operation not permitted
所以这似乎不可能
解决这个问题的最佳方法是什么?仅仅在.zshrc中添加一个别名,希望每当我用"#/bin/bash";它实际上会调用"/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
欢迎任何提示!
我使用了一种组合,将我的新外壳位置添加到/etc/shells
中已批准的外壳列表中,然后用更改我的用户的默认外壳
chsh -s /path/to/new/bash/version
以及确保我的新bash位置被导出到我的路径的前面而不是末尾,所以只查找任何bash的命令都会首先找到:
export PATH=/opt/homebrew/bin/bash:$PATH
到目前为止没有问题,但这是一台新机器,我只是在设置它。如果在任何bash启动脚本中都设置了SHELL
环境变量,请确保也将其更改为新的bash二进制文件。