Почему я не могу изменить оболочку с помощью команды chsh?


12

Я выучил новую команду, по крайней мере, я думал, потому что эта команда: chshне ведет себя так, как описано.

Было описано, что работать так:

  1. cat /etc/shells узнать, какие оболочки установлены, чтобы вы могли выбирать среди них.
  2. сделать , echo $SHELLчтобы знать, какую оболочку вы используете.
  3. выберите один из снарядов и введите chsh -s /path/to/shell
  4. введите пароль и подтвердите echo $SHELL, что вы находитесь в новой оболочке.

Я сделал это, и я не получил сообщение об ошибке при вводе пароля, но я все еще был в той же оболочке.

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash

5
Вы должны выйти и снова войти в систему.
Руи Ф Рибейро

7
Пожалуйста, не размещайте изображения терминального текста. Он может быть скопирован и вставлен в текст вашего вопроса, и на самом деле нет необходимости размещать изображения, если вы не демонстрируете графический сбой или что-то подобное.
Сергей Колодяжный


Я отредактировал свой пост, удалил изображение и вместо этого вставил текст, но изображение вернулось за ночь.
Sharkant

@sharkant Похоже, что кто-то внес изменения в очередь на проверку и получил одобрение, которое отредактировало ваше сообщение после факта. Я думал, что система редактирования SE не перезапишет новое редактирование старым, но хе, кто знает?
Зан Рысь

Ответы:


19

Выйдите и войдите снова.

Команда chshобновит /etc/passwdфайл, но она не изменит текущую оболочку или значение $SHELLпеременной в текущей оболочке (она не может этого сделать). По этой причине вам необходимо снова войти в систему; Вы должны начать новый сеанс входа в систему, чтобы изменения вступили в силу.


Я не понимаю, что такое оболочка входа в систему и как я узнаю, нахожусь ли я в оболочке входа или какой-то другой, не входящей в оболочку. Как начать новый сеанс входа?
sharkant

1
@sharkant Дело в том, что информация, которую вы изменили в /etc/passwdне читается, пока вы не войдете в следующий раз. Чтобы изменения вступили в силу, вам придется полностью выйти из системы и войти снова. Если вам не удастся это сделать, перезагрузка компьютера также будет работать.
Кусалананда

1
Я думаю, что понимаю вас в этот раз: так что команда chsh -s / path / to / shell не меняет сразу оболочку, в которой я нахожусь, но она меняет запись в / etc / passwd, которая вступит в силу, когда я запустите оболочку?
sharkant

@sharkant Именно так и работает! Я счастлив, что наконец понял ваше заблуждение. Я обновлю ответ.
Кусалананда

1

Использование утилиты usermod работало в моем случае. Бег на убунту 18.04.

  1. Сначала проверьте текущее значение

grep nameofuser /etc/passwd

  1. Измени это

sudo usermod --shell /bin/bash nameofuser

  1. Проверьте это

grep nameofuser /etc/passwd

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