Как изменить оболочку входа в Mac OS X с bash на zsh?

90

Я пытаюсь изменить Войти скорлупа Mac OS X от bashдо zsh. Я вижу, что это возможно в Mac OS X Leopard , но для OS X Lion я не могу найти способ. Я действительно надеюсь, что можно изменить оболочку входа с bash на что-то другое. Я не совсем уверен, где искать.

Idlecool
источник
После смены оболочки на zsh мне все равно пришлось запускать zsh вручную. Выход из системы не помог. Затем я изменил zsh на верхнюю оболочку входа в систему. Выйти из системы и там это было.
1
Если ничего другого, вы всегда можете изменить .bashrc, чтобы найти и выполнить zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi, Подсказка, при изменении сценариев запуска оболочки, убедитесь, что оболочка запущена и запустите новую в другом окне - если вы сломаете ее, у вас все еще будет простое место для ее исправления.
Дэн Притц

Ответы:

101

Вы можете изменить пользовательскую оболочку с помощью следующей команды:

chsh -s /bin/zsh

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

Spiff
источник
4
Я установил более новую версию Zsh с Homebrew, который вставил Zsh /usr/local/bin/zsh. К сожалению, chsh не позволяет этого сказать chsh: /usr/local/bin/zsh: non-standard shell. Ответ Даниэля Бека является подходящим решением в этом случае.
adam_0
43
Если у вас возникают проблемы с нестандартными оболочками, я думаю, вы должны быть в состоянии добавить /usr/local/bin/zshк ним, /etc/shellsи это должно решить эту проблему.
Майк Майерс
13
Информация по установке homebrew zsh действительно рекомендует добавить ее в / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George
Иногда не работает Ответ @
Фрэнка
1
@Awesome_girl По умолчанию /etc/shellsпринадлежит и доступен для записи только пользователю root (суперпользователь). Вы можете, например, использовать sudo vi /etc/shellsдля использования sudo( s uper u ser do ), чтобы запустить viредактор для редактирования /etc/shells. Я только что проверил свою систему и подтвердил, что она НЕ защищена Системной защитой целостности, поэтому вы должны иметь возможность редактировать ее как root, не перепрыгивая через обручи, чтобы отключить SIP.
Spiff
54

Как ни странно, тот же метод, на который вы ссылаетесь в своем вопросе, все еще работает в OS X Lion через Sierra (10.12). Единственное отличие: панель настроек называется « Пользователи и группы», а не « Учетные записи» .

  1. Откройте «Системные настройки» → «Пользователи и группы».
  2. Если значок замка уже не разблокирован, нажмите значок замка и выполните аутентификацию.
  3. Нажмите Controlправой кнопкой мыши на пользователя в списке имен пользователей (удерживайте нажатой клавишу во время щелчка или щелкните правой кнопкой мыши с двумя кнопками).
  4. В контекстном меню выберите «Дополнительные параметры…».
  5. Выберите «Оболочка входа» в появившемся листе.

В примечании в верхней части экрана «Дополнительные параметры» утверждается, что вам нужно перезагрузить компьютер, чтобы изменения вступили в силу, но на самом деле вам просто нужно выйти и снова войти в систему.

введите описание изображения здесь

Даниэль Бек
источник
1
Подтвердили, что это работает в Mountain Lion, а также работает с «нестандартными оболочками», которые вы можете установить самостоятельно (или установить Homebrew).
adam_0
2
Подтверждено, что все еще работает в 10.10 Йосемити.
ecnepsnai
4
щелкните правой кнопкой мыши на имени пользователя, чтобы вызвать меню, содержащее «дополнительные параметры». Это заняло у меня пару минут, чтобы найти.
pdwalker
1
Зачем заставлять кого-то уходить за пределы площадки, чтобы собрать всю информацию, прежде чем сможет ответить? Отсюда и комментарий в случае, если кто-то еще делает то же самое предположение, что ответ здесь, а не здесь и там.
pdwalker
1
@jvriesem На самом деле это так. Я думаю, вы пропустили шаг 2.
Даниэль Бек
11

Или же:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
откровенный
источник
3
Можете ли вы объяснить, почему это отвечает на вопрос?
ChrisF
Обязательно запустите это после brew install zsh .
Запах
3
Кроме того, будьте осторожны, чтобы путь zsh, установленный через homebrew, был другим. Я делаю это так:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit
1
ВНИМАНИЕ: Это сломает вашу оболочку, если вы скопируете / вставите ее без предварительной проверки пути zsh. Делай то, что сказал метакермит вместо этого.
radixhound
1

Если кто-то задается вопросом, такая же проблема возникает в macOS Sierra, и следующая команда позволила мне без проблем изменить оболочку:

chpass -s /usr/local/bin/zsh
Максим Лигус
источник
1
Это дублирует другой ответ и не добавляет новый контент. Пожалуйста, не публикуйте ответ, если у вас нет чего-то нового. "chfn и chsh - синонимы для chpass."
DavidPostill