Начиная с macOS Catalina, Apple переключила стандартную оболочку с Bash на Zsh. Кроме того, встроенная версия Bash сильно устарела и на ней могут не работать такие вещи как ассоциативные массивы. Далее в статье мы рассмотрим как обновить и поменять терминал на последнюю версию bash.
Установка последней версии Bash
Вас может удивить, что даже последние версии macOS поставляются с Bash 3.2, датируемым 2007 годом:
/bin/bash --version
# GNU bash, version 3.2.57(1)-release (arm64-apple-darwin22)
# Copyright (C) 2007 Free Software Foundation, Inc.
Это, вероятно, связано с изменением лицензии, произошедшим с Bash 4.0, которое перешло на GPLv3. В любом случае, вы можете установить последнюю версию Bash через Homebrew:
brew install bash
/opt/homebrew/bin/bash --version
# GNU bash, version 5.2.15(1)-release (aarch64-apple-darwin22.1.0)
# Copyright (C) 2022 Free Software Foundation, Inc.
# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Теперь у нас есть последняя версия bash
.
Изменение терминала по умолчанию на Bash
Теперь вам просто нужно добавить Bash от Homebrew в список разрешенных и установить его как оболочку по умолчанию:
sudo sh -c 'echo /opt/homebrew/bin/bash >> /etc/shells'
chsh -s /opt/homebrew/bin/bash
Если вы откроете новое окно терминала или перезапустите терминал, вы увидите, что ваши изменения вступили в силу:
echo $BASH_VERSION
# 5.2.15(1)-release
Если вы также хотите изменить оболочку по умолчанию для пользователя root, выполните следующее:
sudo chsh -s /usr/local/bin/bash
Теперь, если вы используете команду sudo su
, вы также увидите последнюю версию Bash.
Обновление скриптов
Если у вас есть скрипты со строкой shebang, которая ссылается на /bin/bash, они все равно будут использовать устаревшую версию:
#!/bin/bash
echo $BASH_VERSION
Вероятно, вы захотите обновить их, чтобы они указывали следующее вместо этого:
#!/usr/bin/env bash
echo $BASH_VERSION
Отлично, теперь у вас будет использоваться последняя версия Bash везде!
Источник: Change Shell to Latest Bash on macOS