Можно ли реально обновить bash до версии 4.0 в OSX Yosemite?
echo $BASH_VERSION
3.2.57(1)-release
Эта статья и эта тема ссылаются на один и тот же вопрос, но они устанавливают новую оболочку рядом со старой. Есть ли способ напрямую обновить старую оболочку bash?
macos
terminal
bash
command-line
Слуйс
источник
источник
Ответы:
Apple не будет обновлять Bash, потому что последняя версия лицензирована под GPLv3, которую Apple не может использовать. Они обновили большинство своих других оболочек, хотя. ZSH, например, в основном в курсе.
Рекомендации:
После небольшого исследования это кажется основной проблемой:
Это потребовало бы, чтобы в противном случае для программного обеспечения с закрытым исходным кодом его части под GPL были сделаны доступными для модификации, что, очевидно, было бы проблемой для Apple.
источник
bash
. Предложение «Tivoization» может объяснить, почемуbash
его нельзя обновить, скажем, на Apple TV, но не на настольном Mac. Кроме того, «порции GPL» уже должны были бы быть модифицируемыми публикой; v3 не изменит это. Я полагаю, что пункт о патентах GPL v3 будет достаточным, чтобы удержать Apple от прикосновения к коду GPL v3.Можно ли реально обновить bash до версии 4.0 в OSX Yosemite? Да.
Загрузите / установите homebrew http://brew.sh/ , запустив эту команду в терминале.
Выйдите и снова откройте свой терминал. затем введите
Измените оболочку по умолчанию через графический интерфейс терминала с буквальным путем вашего нового bash (РЕДАКТИРОВАТЬ: я еще не нашел способ CLI, который работает)
Можно ли реально обновить bash до версии 4.0 , предоставленной Apple, в OSX Yosemite?
РЕДАКТИРОВАТЬ: Нет. Не в том смысле, о котором просит опера. Например, обновите текущую установку путем замены. В других ответах было отмечено, что Apple не обновила bash из-за проблем с лицензированием. Однако загрузка обновленной и отдельной версии bash и использование ее в качестве оболочки по умолчанию является каноническим решением для большинства переводчиков. Взять, к примеру, питона. Вы не обновляете 2.7 до 3.5, вы загружаете отдельную версию и меняете настройки по умолчанию.
источник
sudo chpass -s /usr/local/bin/bash
. Примечание. Лучше всего указывать на символическую ссылку/usr/local/bin/
таким образом, чтобы Brew мог обрабатывать обновления без необходимости каждый раз менять среду.sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
затемchsh -s /usr/local/bin/bash
установит оболочку по умолчанию для терминалаКак сказал @William в своем ответе, Apple не предоставляет bash 4 из-за ограничений GPL. Однако вы можете установить bash 4+, а также сделать его оболочкой по умолчанию (в том числе для Terminal и iTerm2 ), выполнив следующие действия.
Установите Bash 4 через Homebrew
Сначала установите более новую версию bash. Есть разные способы сделать это, я предпочитаю Homebrew.
brew install bash
.Bash 4 теперь доступен в вашей переменной PATH (при условии, что на вашем пути находится корзина с домашним пивом). Тем не менее, это еще не ваша оболочка по умолчанию. Вы можете найти, где он находится, запустив
which bash
. В моем случае это на/usr/local/bin/bash
.Использование Bash 4
Поскольку он находится в вашем PATH, вы можете начать сеанс Bash 4 с помощью just
bash
или его можно использовать в сценариях с помощью Shebang .Например, это будет использовать конкретный экземпляр bash.
Это будет использовать первый удар по PATH.
Вы также можете установить путь bash для определенных профилей в Terminal / iTerm2, используя шаги, описанные в ответе @ user136952.
Делаем Bash 4 по умолчанию
Как уже упоминалось выше, после установки Bash 4 по-прежнему не является оболочкой по умолчанию. Чтобы сделать bash по умолчанию, вам нужно сделать еще два шага.
Сначала добавьте путь Bash 4 к своему
/etc/shells
файлу, чтобы он был разрешенной оболочкой для входа. Как описано в / etc / shells , этот файл содержит список допустимых оболочек для входа. После добавления нового пути bash мой/etc/shells
выглядит следующим образом:Далее мы используем chsh, чтобы сделать его оболочкой по умолчанию. Поэтому любые сессии для этого пользователя будут использовать эту оболочку. Вы можете прочитать больше об этом в разделе Изменение оболочки в Mac OS X Terminal , но фактическая команда очень проста.
Теперь новый bash является нашей оболочкой входа по умолчанию. Если вы откроете Terminal или iTerm2 и запустите,
bash --version
вы должны увидеть новую версию. Обратите внимание на «Лицензию GPLv3 +», поэтому Apple не связывает ее с MacOS.источник
sudo chpass -s /usr/local/bin/bash
меняет мою оболочку только для root / sudo . Чтобы изменить свой обычный вход в систему, я должен запустить команду безsudo
. Это может быть вещь Active Directory; Я не уверен.#!/usr/local/bin/bash
шебанга, посмотрите на использование#!/usr/bin/env bash
( объяснение ). Это запустит скрипт с любой версией bash, доступной для среды, которая запускает скрипт, то есть с любой вернувшейся версиейwhich bash
. Это более портативное решение, использующее определенные пути. Мы не можем ожидать, что другие пользователи установят bash через homebrew.Вы можете установить другую версию Bash без доморощенного
И следуйте инструкциям здесь: https://gist.github.com/samnang/1759336
Загрузите и установите нужную версию bash. Замените XX (в bash-XX) версией, которую вы хотите, например, 4.4.
Вы можете добавить псевдоним, если хотите, чтобы команда bash использовала его. Поместите в свой ~ / .bash_profile
источник
Параллельная установка с обновлением вашей оболочки (через chsh или GUI) завершится неудачно для сценариев. Часто используются сценарии
env bash
, которые возвращаются к версии OS X bash. Таким образом, вам может потребоваться не полное обновление bash, а параллельная установка, которая всегда возвращает более новую версию bash (т.е. даже когдаenv
она вызывается).Итак, чтобы справиться с этим:
1) установить bash через Homebrew, как написали другие комментаторы
2) установите вашу оболочку входа в систему на эту новую версию (через GUI или команду chsh, как другие опубликовали)
3) установить
/usr/local/bin
(или путь к новой версии bash) перед/bin
переменной $ PATH, добавив ее в~/.bash_profile
:export PATH=/usr/local/bin:$PATH
источник
.bash_profile
любом случае он никогда не вызывает , поэтому в любом случае это повлияет только на то, что вы запускаете непосредственно в терминале.2019: так же просто, как в этом посте
затем вкладка новый терминал, наслаждайтесь!
источник