更改bash而不使其成为默认shell Mac

更改bash而不使其成为默认shell Mac,bash,macos,homebrew,Bash,Macos,Homebrew,在zsh终端内运行bash脚本时,我希望它使用自制bash版本4,而不是OS X的默认版本3 我该怎么做 我在MacBook上安装了Bash4 brew install bash 我希望保留我的zsh,而不是使用下面的命令 chsh -s $(brew --prefix)/bin/bash # BAD! as I lose zsh 我还是想跑: ./my-cool-bash.sh 使用新的bash路径: 例如,如果新bash位于/usr/local/bin中/ /usr/local/bin

在zsh终端内运行bash脚本时,我希望它使用自制bash版本4,而不是OS X的默认版本3

我该怎么做

我在MacBook上安装了Bash4

brew install bash
我希望保留我的zsh,而不是使用下面的命令

chsh -s $(brew --prefix)/bin/bash # BAD! as I lose zsh
我还是想跑:

./my-cool-bash.sh
使用新的bash路径: 例如,如果新bash位于/usr/local/bin中/

/usr/local/bin/bash my-cool-bash.sh
或编写脚本的第一行:

#!/usr/local/bin/bash
使用新的bash路径: 例如,如果新bash位于/usr/local/bin中/

/usr/local/bin/bash my-cool-bash.sh
或编写脚本的第一行:

#!/usr/local/bin/bash

您可以在.zshrc文件中添加一个别名,其效果如下
别名mcb='./usr/local/bin/bash/my-cool-bash.sh,这样您就可以随时从普通的zsh调用它。

您可以在.zshrc文件中添加一个别名,效果如下
别名mcb='./usr/local/bin/bash/my-cool-bash.sh,以便您可以随时从正常的zsh调用它。

在脚本中使用以下shebang:

#!/bin/env bash
这使得他们使用路径中的第一个bash;哪一个是你想要的


此解决方案适用于任何类UNIX系统上的任何Bash。

在脚本中使用以下shebang:

#!/bin/env bash
这使得他们使用路径中的第一个bash;哪一个是你想要的


此解决方案适用于任何类UNIX系统上的任何Bash。

.sh应仅用于与POSIX兼容的脚本,在这种情况下,从技术上讲,您使用哪个POSIX兼容的shell来运行脚本并不重要;不管怎样,结果都应该是一样的。sh应该只用于与POSIX兼容的脚本,在这种情况下,从技术上讲,您使用哪个POSIX兼容的shell来运行脚本并不重要;不管怎样,结果应该是一样的。谢谢,但我寻找了一个更持久的解决方案,而不改变现有的脚本。你不应该硬编码脚本中的路径;请参阅我的答案以获得通用解决方案。谢谢,但我寻找了一个更持久的解决方案,而不改变现有脚本。您不应该在脚本中硬编码路径;请参阅我的答案以获得一般解决方案。