Я установил 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
chsh -l
выводит? (Если это не сработает, каково содержимое/etc/shells
?) Вы уверены, что это не так, а не просто предупреждение? Добавляет ли/usr/bin/zsh
туда эту работу?/bin/zsh
?Ответы:
3 простых шага:
which zsh
это дает вам путь к zshchsh -s /bin/zsh
или замените путь к вашему zsh, если он отличаетсяисточник
/usr/bin/zsh
чтобы/etc/shells
решить проблему.Правильный ответ должен был решить вашу проблему:
Причина, по которой это так, заключается в том, что
chsh
будут приниматься только оболочки, определенные в файле / etc / shells, как вы можете видеть, прочитав руководство дляchsh
:Чтобы решить эту проблему и сделать zsh оболочкой по умолчанию, вам следует:
Очевидно, я предполагаю, что
zsh
это на вашем пути. Это решение также будет работать, если вы, например, решите установить последнюю версиюzsh
сbrew install zsh
.EDIT (спасибо ThisIsFlorianK за комментарий) :
В зависимости от настроек вашей оболочки вы можете получить сообщение
/etc/shells: Permission denied
. Вы можете найти информацию об этой проблеме здесь. Чтобы обойти это, используйте вместо этого следующее:источник
/etc/shells: Permission denied
==> Сделайте это вместо этого:sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh
по умолчанию доступен по определенной причине. Хотя по сути нет ничего плохого в том, чтобы нажимать на множество меню для выполнения того же самого, это не только непереносимо и подвержено ошибкам, но также вводит в заблуждение, поскольку скрывает от пользователей, откуда поступают изменения.Я смог заставить это работать, выполнив следующие действия:
echo $SHELL
источник
/usr/local/bin/zsh
. Поэтому вам нужно будет отредактировать/etc/shells
в sudo и добавить запись,/usr/local/bin/zsh
прежде чем вы сможете выбрать исполняемый файл zsh, установленный hombrewНа своем рабочем MacBook мне пришлось сделать так:
Затем мне пришлось создать
.bash_profile
файл, чтобы мой терминал переключался на z-shell каждый раз, когда я его открывал:Отсюда позаимствована последняя идея .
источник