Як змінити оболонку входу на Mac OS X з bash на zsh?


90

Я намагаюся змінити оболонку входу для Mac OS X з bashна zsh. Я бачу, що це можливо в Mac OS X Leopard , але для OS X Lion я не можу знайти спосіб. Я дуже сподіваюся, що можна змінити оболонку Login з bash на щось інше. Я не точно впевнений, де шукати.


Після зміни оболонки на zsh мені ще довелося запускати zsh вручну. Вихід із системи не допоміг. Потім я змінив zsh на найвищу оболонку входу. Вийшов із системи та там був.

1
Якщо нічого іншого, ви завжди можете змінити .bashrc, щоб знайти та виконати zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Підкажіть, коли ви змінюєте сценарії запуску оболонки, не забудьте продовжити роботу оболонки та запустити нову в іншому вікні - якщо ви зламаєте її, у вас все ще є легке місце для її виправлення.
Dan Pritts

Відповіді:


101

Ви можете змінити оболонку користувача за допомогою наступної команди:

chsh -s /bin/zsh

Примітка. Щоб змінити його на нестандартну оболонку, переконайтесь, що шлях до /etc/shellsфайлу додано .


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
Інформація про встановлення доморощеного zsh насправді рекомендує додати його до / etc / shell: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
Джордж

Іноді не працює. @ frank відповідь гарантує це хоч
oliverbarnes

1
@Awesome_girl За замовчуванням /etc/shellsє власником і користувачемся лише кореневим кодом (супер- користувач). Наприклад, ви можете використовувати sudo vi /etc/shellsдля використання редактора редагування за допомогою sudo( s uper u ser do ) viредактора /etc/shells. Я щойно перевірив свою систему і підтвердив, що вона НЕ захищена Захистом цілісності системи, тому ви повинні мати можливість редагувати її як root, не перестрибуючи через обручі, щоб відключити SIP.
Spiff

54

Як не дивно, той же метод, з яким ви посилаєтесь у своєму запитанні, все ще працює в OS X Lion через Сьєрру (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 .
mmell

3
Також будьте уважні, що шлях zsh, встановлений через homebrew, відрізняється. Я роблю це так:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit

1
ПОПЕРЕДЖЕННЯ: Це зламає вашу оболонку, якщо скопіювати / вставити її, не перевіряючи спочатку шлях zsh. Зробіть те, що замість цього сказав metakermit.
radixhound

1

Якщо хтось, хто цікавиться такою ж проблемою, трапляється на macOS Sierra і наступна команда дозволила мені без проблем змінити оболонку:

chpass -s /usr/local/bin/zsh

1
Це дублює іншу відповідь і не додає нового вмісту. Будь ласка, не публікуйте відповіді, якщо у вас насправді є щось нове. "chfn і chsh - синоніми chpass."
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.