Запуск 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

Що може бути не так? Як я можу це виправити?


Ви спробували запустити "chsh" без жодних аргументів як zol?
Джордж М

Ви використовуєте щось на зразок ldap / nis тощо?
Ульріх Дангел

Набагато важливіше: чому він не дає вам більше інформації? Це повідомлення може бути чудовим для досвідченого сисопа, але для більшості людей це прямо-таки грубо. Я зіткнувся з тією ж проблемою вже 5 років, і люди задаються питанням, чому Linux витратив останні 20 років не на робочому столі.
flurbius

Ви очікували, що ваша оболонка зміниться миттєво? Ви можете змінити свій логін оболонку з chsh, що означає , що ви повинні будете знову увійти в систему .
Kusalananda

Відповіді:


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

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" з відсутня .


-lє недійсним варіантом для мене. Я на Ubuntu 16.04
byxor

Вибачте, я не даю інформацію про дистрибутив, де працюють команди. У моєму випадку я перевірив Fedora 25. Я пробую на ubuntu, і я перевіряю, що варіант "-l" відсутній.
lourencoccc

Незалежно, chsh -sпрацював на відмінно. Спасибі.
byxor

Параметр дійсний на Manjaro, але він все одно відмовляється змінювати оболонку.
flurbius

0

Якщо бачите chsh: Shell not changed., це може означати, що оболонку вже змінили.

Перевірте, яка оболонка вказана:

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

Якщо це правильно, вийдіть із системи та ввійдіть знову, щоб зміни набрали чинності.


0

Просто натрапив на це. Незалежно від того, що я робив при вході в систему та назад, це не змінить мою оболонку, але вона була зазначена в / etc / shell та in / 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

Мене негайно вийшли з системи та після входу знову: Voila! Шелл був змінений

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.