Как заставить zsh работать как оболочку входа в Mac OS X (в iTerm)?

Когда zsh устанавливается в качестве оболочки входа в Mac OS X, когда он запускается iTerm, zsh не считает, что он запускается как оболочка входа, хотя он начинался как '-zsh (' - помещается как первый символ arg [0]), который должен означать, что он должен начинаться как оболочка входа.

Итак, когда я устанавливаю оболочку входа в bash, bash распознает это первое '- в $0 и запускается как оболочка входа, но zsh не делает этого, хотя кажется, что он должен.

Есть ли способ заставить zsh распознать '- в arg [0] или заставить iTerm запустить оболочку с аргументом командной строки --login?

Ответ 1

chsh -s $(which zsh)

Вам будет предложено ввести пароль, но как только вы обновите свои настройки, все новые сеансы iTerm/Terminal, которые вы начнете на этом компьютере, по умолчанию будут установлены на zsh.

Ответ 2

В iTerm → Настройки → вкладка "Профили" → "Общий раздел". Команда:/bin/zsh --login

/bin/zsh --login

Ответ 3

Перейдите в панель Пользователи и группы Системные настройки → Выберите пользователя → Щелкните блокировку, чтобы внести изменения (внизу левый угол) → щелкните правой кнопкой мыши текущего пользователя, выберите Дополнительные параметры... → Выберите оболочку для входа:/bin/zsh и ОК

Ответ 4

Вы пробовали редактировать запись оболочки в настройках учетной записи.

Перейдите к настройкам учетных записей, разблокируйте и щелкните правой кнопкой мыши свою учетную запись для диалога "Дополнительные параметры". Ваша оболочка должна быть /bin/zsh, и вы можете соответствующим образом отредактировать этот вызов (т.е. Добавить аргумент --login).

Ответ 5

Команда для изменения оболочки при запуске chsh -s <path_to_shell>. По умолчанию оболочки в Mac OS X устанавливаются внутри каталога bin, поэтому, если вы хотите изменить значение по умолчанию zsh, вы должны использовать следующие

chsh -s /bin/zsh

Если вы используете другую версию zsh, вам может потребоваться добавить эту версию в /etc/shells, чтобы избежать сообщения нестандартной оболочки. Например, если вам нужна версия zsh home- brew, тогда вы должны добавить /usr/local/bin/zsh в вышеупомянутый файл, который вы можете сделать в одной команде sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells", а затем запустите

chsh -s /usr/local/bin/zsh

Или, если вы хотите сделать все это в одной команде, просто скопируйте и вставьте это, если у вас уже установлен zsh

sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh

Ответ 6

Используйте утилиту login для создания оболочки входа. Предположим, что пользователь, к которому вы хотите войти, имеет имя пользователя Alice, и zsh устанавливается в /opt/local/bin/zsh (например, более поздняя версия, установленная через MacPorts). В iTerm 2 перейдите в "Настройки", "Профили", выберите профиль, который вы хотите настроить, и введите команду "

login -pfq Alice /opt/local/bin/zsh

Подробнее о параметрах см. man login.

Ответ 7

Решение, которое сработало для меня, обрисовано в общих чертах в этом посте под названием: Используйте Homebrew zsh вместо OS X по умолчанию.

Решением было выполнить следующую команду в терминале

sudo dscl . -create /Users/$USER UserShell /usr/local/bin/zsh

Затем вы должны ввести свой пароль и вуаля.