Mac 升级 Bash 到最新版本

一、场景概述
  • 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 来安装

  • 点击此处查看具体到安装和卸载步骤

三、升级安装
  1. 查看当前 bash 版本

     // /bin/bash --version
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
    
  2. 采用 brew 安装

    brew install bash
    

    P.S

    • 如果此处安装出错,比如证书过期、等等错误,可以采用 brew doctor 来自检 brew 工具包,根据自检的警告提示执行相应的提示命令(可能会升级你的 Mac 系统的小版本)
  3. 查看安装的 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
      
  4. 查看 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

    1. 将新版本的 bash 路径添加到 /etc/shells 文件中,作为系统默认的 shelllogin shell(登录到系统时所使用的 shell

      /bin/bash
      /bin/csh
      /bin/dash
      /bin/ksh
      /bin/sh
      /bin/tcsh
      /bin/zsh
      /usr/local/bin/bash
      
    2. 执行 chsh 设置为默认 shell

      sudo chsh -s /usr/local/bin/bash
      

    P.S

    • 在写 bash 脚本的时候,第一行默认写法是 #!/bin/bash 显示设置使用 /bin/bash 执行脚本

    • 如果想确保使用最新版本的 bash 执行可以在脚本的第一行修改为 #!/usr/local/bin/bash

  • 方案二:(改变了原有系统的 /bin/bash

    1. 替换系统自带 bash,并做备份

      sudo mv /bin/bash /bin/bash.origin
      sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash
      
    2. 由于 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 menuTerminal

    • Terminal 中输入 csrutil disable 关闭 SIP (csrutil enable 打开SIP)

    • 重启 reboot OSX 重启后,以上的重命名和软链接即可进行操作了。待操作完毕以后,再将 SIP 开启即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值