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