Создание оболочки по умолчанию для ZSH в MacOSX

Я установил Zsh на моем Mac. и теперь я хочу сделать его оболочкой по умолчанию вместо Bash. Но я, кажется, сталкиваюсь со следующей ошибкой:

$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell

Ответы

Ответ 1

3 простых шага:

  • which zsh это дает вам свой путь к zsh
  • Затем chsh -s /bin/zsh или замените путь на ваш zsh, если он отличается
  • Перезагрузите компьютер.

Ответ 2

Правильный ответ должен был решить вашу проблему:

chsh: /usr/bin/zsh: нестандартная оболочка

Причина этого в том, что chsh будет принимать только те оболочки, которые определены в файле /etc/shells, как вы можете увидеть, прочитав руководство по chsh:

chsh примет полный путь к любому исполняемому файлу в системе. Однако он выдаст предупреждение, если оболочка не указана в файле /etc/shells.

Чтобы решить эту проблему и сделать zsh оболочкой по умолчанию, вам необходимо:

$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)

Очевидно, я предполагаю, что zsh находится на вашем пути здесь. Это решение также будет работать, если вы, например, решите установить последнюю zsh с brew install zsh.

РЕДАКТИРОВАТЬ (спасибо за ThisIsFlorianK за комментарий):

В зависимости от настроек вашей оболочки вы можете получить сообщение /etc/shells: Permission denied. Вы можете найти информацию об этой проблеме здесь. Чтобы обойти это, используйте следующее:

$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)

Ответ 3

Мне удалось выполнить эту работу, выполнив следующие действия:

  • Перейдите в Системные настройки
  • Нажмите "Пользователи и группы"
  • Щелкните по блокировке, чтобы внести изменения.
  • Щелкните правой кнопкой мыши текущего пользователя → Дополнительные параметры
  • Измените оболочку входа в /bin/zsh в раскрывающемся меню.
  • Откройте новый терминал и проверьте с помощью echo $SHELL

Ответ 4

На моей работе MacBook мне пришлось сделать это:

sudo chsh -s /usr/local/bin/zsh my_user_name

Затем мне пришлось создать файл .bash_profile чтобы мой терминал переключался на z-shell при каждом его открытии:

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

Последняя идея была заимствована отсюда.