一、场景概述
-
Mac
自带的bash shell
版本为 2007 年的发行版本3.2.57(1)-release
-
由于该版本授权为
GPLv2
, 3.2 的下一个版本为 4.0,使用GNU General Public License v3 (GPLv3)
授权,苹果一直没有想采用该协议的授权,所以一直没有升级 -
由于在工作中需要编写一些
shell
脚本,需要对编写的脚本进行debug
调试,而不巧的是,支持调试功能的bash
在 4.0 以后,所以才索性将bash
升级到目前最新到版本5.1.8
二、前置安装
-
采用
Mac
安装软件可以使用brew
来实现非常到方便,所以如果是第一次在Mac
种采用命令行到方式安装软件,不妨采用brew
来安装 -
点击此处查看具体到安装和卸载步骤
三、升级安装
-
查看当前
bash
版本 // /bin/bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
-
采用
brew
安装brew install bash
P.S
- 如果此处安装出错,比如证书过期、等等错误,可以采用
brew doctor
来自检brew
工具包,根据自检的警告提示执行相应的提示命令(可能会升级你的Mac
系统的小版本)
- 如果此处安装出错,比如证书过期、等等错误,可以采用
-
查看安装的
bash
// which -a bash /usr/local/bin/bash /bin/bash
P.S
-
安装新版的
bash
在/usr/local/bin
下面,而系统自带的bash
在/bin
下面 -
如果想使用新版本的
bash
必须要保证PATH
中的/usr/local/bin
排在/bin
的前面cd ~ cat .bash_profile
-
-
查看
bash
版本 ~/ bash --version GNU bash,版本 5.1.8(1)-release (x86_64-apple-darwin19.6.0) 版权所有 (C) 2020 自由软件基金会 许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 <http://gnu.org/licenses/gpl.html> 本软件是自由软件,您可以自由地更改和重新发布。 在法律许可的情况下特此明示,本软件不提供任何担保。 ~/ /bin/bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19) Copyright (C) 2007 Free Software Foundation, Inc.
四、置为默认(可选)
-
方案一:(不改变原有系统的
/bin/bash
)-
将新版本的
bash
路径添加到/etc/shells
文件中,作为系统默认的shell
即login shell
(登录到系统时所使用的shell
)/bin/bash /bin/csh /bin/dash /bin/ksh /bin/sh /bin/tcsh /bin/zsh /usr/local/bin/bash
-
执行
chsh
设置为默认shell
sudo chsh -s /usr/local/bin/bash
P.S
-
在写
bash
脚本的时候,第一行默认写法是#!/bin/bash
显示设置使用/bin/bash
执行脚本 -
如果想确保使用最新版本的
bash
执行可以在脚本的第一行修改为#!/usr/local/bin/bash
-
-
方案二:(改变了原有系统的
/bin/bash
)-
替换系统自带
bash
,并做备份sudo mv /bin/bash /bin/bash.origin sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash
-
由于
MacOS
下的sh
并不是直接链接bash
,而是bash
的一个文件拷贝,所以还要替换默认的sh
指向的命令为bash
sudo mv /bin/sh /bin/sh.origin sudo ln -s /usr/local/opt/bash/bin/bash /bin/sh
P.S 如果以上替换显示没有权限的操作方式
-
重启
OSX
系统,然后按住Command + R
-
出现界面之后,选择
Utilities menu
中Terminal
-
在
Terminal
中输入csrutil disable
关闭SIP
(csrutil enable
打开SIP
) -
重启
reboot OSX
重启后,以上的重命名和软链接即可进行操作了。待操作完毕以后,再将SIP
开启即可。
-