Как сделать ZSH оболочкой по умолчанию?

124

Я пытаюсь установить ZSH в качестве оболочки по умолчанию, однако она продолжает возвращаться к bash.

Я пробовал этот код:

sudo chsh -s $(which zsh)

Я также попробовал:

sudo chsh -s /bin/zsh 

Также пробовал эти команды без sudo. Любые идеи о том, что еще мне нужно сделать. При запуске ZSH изнутри bash он загружается и работает нормально, но я бы хотел установить его в качестве оболочки по умолчанию.

Том
источник

Ответы:

217

Просто с помощью chsh:

chsh -s $(which zsh)

без sudo должно работать. Если вы используете sudoего, изменит оболочку не для вашего рабочего пользователя, а для пользователя root

Наконец, выйдите из вашего компьютера и войдите снова .

Поиск неисправностей:

Флориан Диш
источник
17
У меня такая же проблема , и ответ не решить
Aswin Murugesh
@AswinMurugesh Посмотри мой ответ
Шайлеш Каламкар,
9
Вы также можете запустить sudo chsh -s / bin / zsh userName
Мика Рун
16
Примечание: мне пришлось перезапустить мою систему, прежде чем это вступит в силу.
KevinO
нет, это не сработало.
Ха-ха TTpro
40

Я нашел это на форуме суперпользователя

Откройте / etc / passwd:

sudo vi /etc/passwd

Найдите строку с вашим именем пользователя:

username:x:1634231:100:Your Name:/home/username:/bin/bash

и замените bash на zsh:

username:x:1634231:100:Your Name:/home/username:/bin/zsh

Выйдите и войдите снова, чтобы изменения вступили в силу.

Шайлеш Каламкар
источник
11
Вы должны быть очень осторожны с этим подходом - обычно это не лучшая идея, чтобы дурачиться/etc/passwd
Томас Уорд
Несмотря на то, что я не использовал этот метод, он помог мне проверить эффектchsh -s `which zsh`
jchook
ХА да это всего трахнул мой пользователь. Не могу войти в систему.
Марк Карпентер-младший
6

Вы также можете сделать это:

откройте файл bashrc в вашем любимом редакторе

sudo nano ~/.bashrc

затем добавьте строку ниже верхней части файла

exec zsh

Он будет выполнять команду каждый раз, когда вы загружаете терминал и запускаете оболочку zsh.

Саддам Х
источник
13
и это также сломает все ваши неинтерактивные задания ( scpнапример).
Jakuje
Извините за понижение, но меняются /etc/passwdили chshявляются лучшими решениями и более надежными.
Тимо
Спасибо, что сделали это. @Timo Я внес изменения в / etc / passwd и / или chsh, но по умолчанию я продолжал возвращаться в bash. Я добавил exec zsh согласно опубликованному ответу, и это сработало.
Страйкер
3

Если zsh не является / bin / zsh, то chsh не будет работать. В Ubuntu это / usr / bin / zsh. так делает chsh -s /usr/bin/zshили chsh -s `which zsh`должен работать. Также необходимо повторно войти в систему для сеанса рабочего стола.

JBP
источник
На моем Ubuntu VPS это / bin / zsh
Вильгельм Эразмус
На моем Ubuntu я вижу это в обоих /bin/zshи/usr/bin/zsh
blue_chip
2
На моем (14.04, с zsh из основного репо) есть два zsh, и они оба являются двухслойными символическими ссылками: / usr / bin / zsh -> / etc / alternatives / zsh-usrbin -> / bin / zsh5 и / bin / zsh -> / etc / alternatives / zsh -> / bin / zsh5
wjandrea
1

У меня была проблема с разрешениями на изменение оболочки под текущим пользователем, но следующий мне помогает (вы должны установить правильную папку 'zsh' для вашего компьютера):

sudo chsh -s /bin/zsh <myUserName>
Rib47
источник
0

Странно, «принятый» ответ не работал для меня, как я получил

chsh: PAM: Authentication failure

Чтобы решить эту проблему, отредактируйте ваш / etc / passwd и убедитесь, что он указывает на расположение zsh. (Вы можете найти это, запустив «which zsh»). В моем случае мой пользователь с именем «webmaster» выглядел так:

webmaster:x:1001:1001:webmaster,,,:/var/www/webmaster:/usr/bin/zsh
Джон Кроуфорд
источник
Я полагаю, что он должен попросить пароль. Я получил ту же ошибку на моей предыдущей установке монетного двора. Текущий работал хорошо, хотя
Вильгельм Эразмус
У кого-то была такая же проблема, и оказалось, что они побежали chsh -s zsh, что сделало запись в passwd неверной.
wjandrea
0

Введите в терминале

sudo chsh -s $(which zsh) root
Valmor Nascimento
источник