Как сказал @William в своем ответе, Apple не предоставляет bash 4 из-за ограничений GPL. Однако вы можете установить bash 4+, а также сделать его оболочкой по умолчанию (в том числе для Terminal и iTerm2 ), выполнив следующие действия.
Установите Bash 4 через Homebrew
Сначала установите более новую версию bash. Есть разные способы сделать это, я предпочитаю Homebrew.
- Установите Homebrew, как описано на http://brew.sh .
- Установите bash, используя
brew install bash
.
Bash 4 теперь доступен в вашей переменной PATH (при условии, что на вашем пути находится корзина с домашним пивом). Тем не менее, это еще не ваша оболочка по умолчанию. Вы можете найти, где он находится, запустив which bash
. В моем случае это на /usr/local/bin/bash
.
Использование Bash 4
Поскольку он находится в вашем PATH, вы можете начать сеанс Bash 4 с помощью just bash
или его можно использовать в сценариях с помощью Shebang .
Например, это будет использовать конкретный экземпляр bash.
#!/usr/local/bin/bash
...your script...
Это будет использовать первый удар по PATH.
#!/usr/bin/env bash
...your script...
Вы также можете установить путь bash для определенных профилей в Terminal / iTerm2, используя шаги, описанные в ответе @ user136952.
Делаем Bash 4 по умолчанию
Как уже упоминалось выше, после установки Bash 4 по-прежнему не является оболочкой по умолчанию. Чтобы сделать bash по умолчанию, вам нужно сделать еще два шага.
Сначала добавьте путь Bash 4 к своему /etc/shells
файлу, чтобы он был разрешенной оболочкой для входа. Как описано в / etc / shells , этот файл содержит список допустимых оболочек для входа. После добавления нового пути bash мой /etc/shells
выглядит следующим образом:
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash
Далее мы используем chsh, чтобы сделать его оболочкой по умолчанию. Поэтому любые сессии для этого пользователя будут использовать эту оболочку. Вы можете прочитать больше об этом в разделе Изменение оболочки в Mac OS X Terminal , но фактическая команда очень проста.
chsh -s /usr/local/bin/bash
Теперь новый bash является нашей оболочкой входа по умолчанию. Если вы откроете Terminal или iTerm2 и запустите, bash --version
вы должны увидеть новую версию. Обратите внимание на «Лицензию GPLv3 +», поэтому Apple не связывает ее с MacOS.
$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.6.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>