Запуск chsh не меняет оболочку

19

Я хочу сменить оболочку с bash на zsh.

Я попытался запустить следующее во время входа в систему как пользователь zol:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

Что может быть не так? Как я могу это исправить?

Zolomon
источник
Вы пробовали запустить 'chsh' без аргументов как zol?
Джордж М
Вы используете что-то вроде ldap / nis и т. Д.?
Ульрих Дангел
Гораздо важнее: почему это не дает вам больше информации? Это сообщение может быть хорошо для опытного сисопа, но для большинства людей это совершенно грубо. Я столкнулся с той же проблемой 5 лет назад, и люди задаются вопросом, почему Linux провел последние 20 лет не на рабочем столе.
Флурбиус
Вы ожидали, что ваша оболочка изменится мгновенно? Вы можете изменить свой логин оболочку с chsh, что означает , что вы должны будете снова войти в систему .
Кусалананда

Ответы:

17

Изменения учетной записи пользователя не будут сохранены, если вы открыли / etc / passwd (vim / etc / passwd) при попытке изменить информацию.

Альтернатива: попробуйте с usermod (как zol):

$ usermod -s /bin/zsh 

или

$ sudo usermod -s /bin/zsh zol

Если это тоже не работает, отредактируйте /etc/passwdвручную.

sudo vipw
# set zol's shell to /bin/zsh
:wq
fromnaboo
источник
6
пожалуйста, используйте vipwвместо того, чтобы vimустановить соответствующие блокировки файлов.
Ульрих Дангел
«Изменения учетной записи пользователя не будут сохранены, если вы открыли / etc / passwd» - но почему?
Танатос
Это тоже не работает. Когда я перезагружаю виртуальную машину Linux (centos7), все в порядке!
WeizhongTu
1

Когда запускать "chsh -l", если вы видите:

/usr/bin/zsh
/bin/zsh

Тогда используйте:

chsh -s /usr/bin/zsh

Предупреждение: Команды были запущены в Fedora 25, В Ubuntun опция "-l" из отсутствует.

lourencoccc
источник
-lневерный вариант для меня. Я на Ubuntu 16.04
byxor
Извините, я не даю информацию о дистрибутиве, где работают команды. В моем случае я тестировал на Fedora 25. Я пробовал на Ubuntu и проверял, что опция "-l" отсутствует.
lourencoccc
Независимо, chsh -sработал отлично. Благодарю.
byxor
Эта опция действительна для Manjaro, но она по-прежнему отказывается менять оболочку.
Флурбиус
0

Если вы видите chsh: Shell not changed., это может означать, что оболочка уже была изменена.

Проверьте, какая оболочка в списке:

cat /etc/passwd | grep `cd; pwd`

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

Код Блинг
источник
0

Просто столкнулся с этим. Независимо от того, что я делал, вход и выход не изменили мою оболочку, но она была указана в / etc / shells и / etc / passwd.

наконец меня осенило: может быть, я вошел в систему с другого сеанса?

Так я и сделал

# who

и это подтвердило, что у меня действительно были другие открытые сессии с других машин:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

Я тогда сделал:

pkill -KILL -u dom

Я был немедленно вышел из системы и после входа в систему: Вуаля! Оболочка была изменена

Дом
источник