Вопрос или проблема
Я пытаюсь обновить оболочку bash
на моем Mac OS Mavericks.
$ brew install bash
$ which -a bash
/bin/bash
/usr/local/bin/bash
$ which bash
/bin/bash
$ chsh -s /usr/local/bin/bash
$ which bash
/bin/bash
В настройках Терминала: Открывать оболочки с -> Команда (полный путь): /usr/local/bin/bash
.
Но все равно я не могу переключиться на bash-оболочку, установленную через brew.
Что я могу сделать?
Из руководства chsh
:
При изменении оболочки входа, и не суперпользователем, пользователь не может изменить с нестандартной оболочки или на нестандартную оболочку. Нестандартная оболочка определяется как оболочка, не найденная в
/etc/shells
.
Поэтому вы можете либо запустить chsh
от имени root
sudo chsh -s /usr/local/bin/bash "$USER"
или добавить /usr/local/bin/bash
в /etc/shells
, чтобы сделать ее “стандартной оболочкой”
echo /usr/local/bin/bash | sudo tee -a /etc/shells
chsh -s /usr/local/bin/bash
Обратите внимание, что тот факт, что which bash
все еще указывает на /bin/bash
, не означает, что ваша оболочка не была изменена, это просто значит, что /bin
идет перед /usr/local/bin
в вашем $PATH
.
В моем случае, установив bash тем же образом через brew, я проверил расположение bash с помощью which bash
. Затем я изменил команды на расположение, показанное в выводе, чтобы оно соответствовало ответу @ant’s:
echo "/opt/homebrew/bin/bash" | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/bash
Ответ или решение
Являясь экспертом в области информационных технологий, давайте рассмотрим проблему изменения оболочки Bash на Mac OS Mavericks и способы её решения. Во-первых, важно понять, какие действия были предприняты, и почему они не привели к желаемому результату. Рассмотрим это пошагово.
Теоретическая основа
На компьютерах Mac OS X, включая версию Mavericks, оболочка по умолчанию установлена в системе и обычно располагается в каталоге /bin/bash
. Команда brew install bash
позволяет установить более новую версию Bash, которая будет находиться по пути /usr/local/bin/bash
. Это происходит потому, что Homebrew, удобный менеджер пакетов, устанавливает программы в другой каталог.
Пример
Вы попытались изменить текущую оболочку на новую версию с помощью команды chsh
, но это оказалось безуспешным. Причина кроется в том, что операционная система по умолчанию может использовать только те оболочки, которые указаны в файле /etc/shells
. Этот файл содержит список "стандартных" оболочек, которые можно установить как оболочку по умолчанию без использования прав суперпользователя.
Применение на практике
Для успешного изменения оболочки Bash вам нужно выполнить следующие шаги:
-
Добавление новой оболочки в список "стандартных":
Добавьте путь к новой версии Bash, установленной через Homebrew, в файл/etc/shells
. Это сделает новую оболочку "стандартной", что позволит вам выбрать её без привилегий суперпользователя.echo /usr/local/bin/bash | sudo tee -a /etc/shells
-
Изменение текущей оболочки:
После добавления пути в/etc/shells
, измените текущую оболочку с помощью командыchsh
.chsh -s /usr/local/bin/bash
-
Убедитесь, что новая оболочка действительно используется:
Перезапустите терминал и проверьте, используется ли новая версия Bash. Командаecho $SHELL
должна выводить путь/usr/local/bin/bash
.
Дополнительные соображения
Некоторые пользователи могут установить Bash в другой каталог, например, /opt/homebrew/bin/bash
. В таком случае вы должны учесть это в своей команде:
echo "/opt/homebrew/bin/bash" | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/bash
Это изменение носит характер локального для вашего пользователя и влияет только на вашу учетную запись. Если вы администратор и хотите внедрить это изменение для всех пользователей, либо если у вас возникнут проблемы с изменением оболочки, вы можете использовать команду sudo
:
sudo chsh -s /usr/local/bin/bash "$USER"
Заключение
Понимание процесса установки и изменения оболочки Bash на Mac OS может значительно улучшить ваш опыт работы с терминалом и автоматизацией задач. Убедитесь, что новые пути добавлены в переменную окружения PATH
, чтобы новая версия Bash приоритетно использовалась в вашей системе. Это позволит избежать ненужных проблем с выбором стандартной оболочки в будущем.
Желаю успехов в ваших начинаниях, и пусть ваша работа с Mac OS X будет более эффективной и приятной!