Как мне установить мою оболочку в Mac OS X?

21

Я знаю, что могу установить «Оболочки открытыми» в настройках терминала, но мне любопытно, есть ли какой-либо общесистемный способ установки этого (аналогично обновлению / etc / passwd в некоторых Unixes).

Нолл
источник

Ответы:

24

Используйте chshутилиту так:

chsh -s bash

Apple chshнемного изменилась в Mac OS X по сравнению с тем, что chshвы видели в Linux, например. Вы можете прочитать их на странице Chsh Mac OS X Man .

Джон Т
источник
И тут я подумал, что это было что-то сложное с какой-то утилитой для OSX, хех Благодарю.
Нолл
@john - хорошо выучил :)
Акира
Да, я знал ответ и в прошлый раз, меня просто избили! :(
Джон Т
19

Обратите внимание, что вам будет разрешено перейти только на оболочку, указанную в /etc/shells. Обычно это нормально, но это означает, что если вы хотите установить Bash 4 (из Homebrew, MacPorts или самостоятельно), вам необходимо добавить строку в /etc/shells. (Я столкнулся с этим несколько недель назад и подумал, что это может помочь другим узнать ...)

Изменить : Тим Смит отмечает, что вы можете обойти /etc/shellsограничение, если вы запускаете chshс правами root через sudo. Например, sudo chsh -s /usr/local/bin/my_shell $USERбудет работать, даже если my_shellне указан в /etc/shells. Я предпочитаю редактировать /etc/shells, но, в конце концов, это одно из применений, sudoтак как вы не можете редактировать /etc/shellsкак обычный пользователь. Так что, возможно, шесть из одного, полдюжины из другого.

Телемах
источник
Зачем менять, /etc/shellsесли не нужно? Для здравомыслия я предпочитаю сохранять системные файлы такими же.
ma11hew28
@MattDiPasquale Я не уверен, что вы подразумеваете под "здравомыслием". /etc/shellsэто файл в системе, который определяет распознанные оболочки. Я изменяю этот файл, потому что хочу добавить оболочку в список распознанных оболочек. Кажется довольно разумным для меня.
Телемах
Хорошо альт. Кстати, почему-то у меня не работает chsh. Я получил это; chsh: bash: non-standard shell
RyBolt
@RyBolt Верно: причина, вероятно, в том, что я упоминаю в ответе. Вы не можете использовать chshодин, если вы пытаетесь использовать оболочку, которая не указана в /etc/shells.
Телемах
@Telemachus, я просто пытался перейти на исходную оболочку bash, которая шла с моей сборкой Mac OSX по умолчанию. Может быть, это не то, /etc/shellsчто мне кажется странным.
RyBolt
10

Для этого с помощью Mac OS X GUI:

  1. Откройте «Системные настройки».
  2. Откройте панель настроек «Аккаунты» / «Пользователи и группы» и разблокируйте панель настроек, если это применимо.
  3. На пользователя, которого вы хотите изменить оболочку, control+ щелкните или щелкните правой кнопкой мыши на пользователе и выберите «Дополнительные параметры ...»
  4. Там, где написано «Login Shell:», измените его на оболочку, которую вы хотите использовать.

Следует отметить, что в этом месте вы можете изменить свой домашний каталог, UUID, идентификатор пользователя, идентификатор группы и короткое имя, если вам не нравится терминал. Существует аналогичный вопрос здесь находится также.

Chealion
источник
5

Используя ответы выше, я получил сообщение об ошибке:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell

Чтобы обойти это:

sudo chsh -s zsh $(whoami)

whoami в подоболочке стоит сменить оболочку для своего пользователя, а не рута.

Еще одна вещь, если вы используете доморощенный. Когда вы запускаете команды от имени пользователя root (используя sudo), zsh указывает на / bin / zsh, который поставляется с OSX и может быть устаревшим. Чтобы использовать последнюю версию, установленную с помощью homebrew, используйте следующее:

sudo chsh -s $(which zsh) $(whoami)
фил пирожков
источник