Я пытаюсь навсегда изменить мою оболочку на 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
, даже если он не вызывается, пока не указана оболочка? Любая помощь приветствуется.
Вам необходимо снова выйти из системы, чтобы эти изменения вступили в силу. Оболочка, определенная в файле / etc / passwd, является вашей оболочкой для входа в систему :-) Поэтому для этого вам необходимо войти в систему.
Здесь может возникнуть пара различных проблем.
Проблема 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