问题描述
我正在尝试为 Kubeflow 安装安装 Anthos Service Mesh (ASM),并且需要 /bin/bash 为 v5+。 MacOS 带有 Bash v3.2.57,但它不起作用。简单地在“/usr/local/bin”中安装 Bash v5+ 也不起作用,因为安装的几个 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”执行 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 二进制文件。