chsh -s / usr / bin / zsh не работает

Я пытаюсь навсегда изменить мою оболочку на zsh с помощью команды chsh, но она не работает.

zsh установлен (через apt) и отлично работает, когда я вызываю его непосредственно из терминала bash. Но я не могу заставить zsh загружаться в терминалы по умолчанию, и chsh делает что-то странное:

$ echo $SHELL
/bin/bash
$ which zsh
/usr/bin/zsh
$ chsh -s /usr/bin/zsh
Password: 
$ echo $SHELL
/bin/bash
$ grep kurtosis /etc/passwd
kurtosis:x:1000:1000:kurtosis,,,:/home/kurtosis:/usr/bin/zsh

Кажется, chsh удалось правильно изменить / etc / passwd, но не переменную $ SHELL env , Таким образом, новые терминалы всегда начинаются с bash, а не с zsh.

Я не уверен, где искать эту проблему. .bashrc, даже если он не вызывается, пока не указана оболочка? Любая помощь приветствуется.

24
задан 10 March 2019 в 22:14

2 ответа

Вам необходимо снова выйти из системы, чтобы эти изменения вступили в силу. Оболочка, определенная в файле / etc / passwd, является вашей оболочкой для входа в систему :-) Поэтому для этого вам необходимо войти в систему.

0
ответ дан 10 March 2019 в 22:14

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

Проблема 1. Оболочка входа по умолчанию не была изменена в / etc / passwd. Ее можно решить, запустив chsh -s / usr / bin / zsh , который обновит / etc / passwd

Проблема 2. Bash все еще используется даже после изменения оболочки входа по умолчанию с использованием chsh -s / usr / bin / zsh и подтверждения того, что ваша оболочка действительно установлена ​​на zsh в / etc / passwd. Это вызвано переработанными сеансами ssh. Выход из системы и повторный вход в систему не решат проблему немедленно, сеансы должны либо истечь, либо тайм-аут, либо вам нужно завершить сеанс и повторно подключиться. Вы можете перезагрузиться, но ниже приведен более простой метод, который поможет вам найти сеанс, который нужно убить.

Проверить, какую оболочку я использую (/ bin / bash) и какую оболочку я должен использовать (/ usr / bin / zsh):

asc@g1:~$ echo $SHELL
/bin/bash

asc@g1:~$ cat /etc/passwd|grep asc
asc:x:1000:1000:asc,,,:/home/asc:/usr/bin/zsh

Узнать информацию о моем сеансе терминала:

asc@g1:~$ who
asc      pts/1        2020-01-28 13:08 (172.16.1.2)

asc@g1:~$ ps aux|grep ssh
root      1220  0.0  0.0  72300  6076 ?        Ss   Jan22   0:00 /usr/sbin/sshd -D
root     32879  0.0  0.0 107988  7224 ?        Ss   13:08   0:00 sshd: asc [priv]
asc      33031  0.0  0.0 107988  3612 ?        S    13:08   0:00 sshd: asc@pts/1
asc      47453  0.0  0.0  14428  1032 pts/1    S+   13:21   0:00 grep --color=auto ssh

Завершить мой сеанс терминала:

asc@g1:~$ kill 33031

Затем снова подключитесь к машине по SSH, и вы будете использовать ZSH

2
ответ дан 28 January 2020 в 13:31

Другие вопросы по тегам:

Похожие вопросы: