Невозможно изменить bash оболочку в Mac OS X.

Вопрос или проблема

Я пытаюсь обновить оболочку 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 вам нужно выполнить следующие шаги:

  1. Добавление новой оболочки в список "стандартных":
    Добавьте путь к новой версии Bash, установленной через Homebrew, в файл /etc/shells. Это сделает новую оболочку "стандартной", что позволит вам выбрать её без привилегий суперпользователя.

    echo /usr/local/bin/bash | sudo tee -a /etc/shells
  2. Изменение текущей оболочки:
    После добавления пути в /etc/shells, измените текущую оболочку с помощью команды chsh.

    chsh -s /usr/local/bin/bash
  3. Убедитесь, что новая оболочка действительно используется:
    Перезапустите терминал и проверьте, используется ли новая версия 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 будет более эффективной и приятной!

Оцените материал
Добавить комментарий

Капча загружается...