Как сделать 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`должен работать. Также необходимо повторно войти в систему для сеанса рабочего стола.


На моем 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>

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.