Чому я не в змозі змінити оболонку командою 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
Спершу потрібно вийти та увійти знову.
Rui F Ribeiro

7
Будь ласка, не публікуйте зображення тексту терміналу. Його можна скопіювати та вставити в основну частину вашого запитання, і насправді не потрібно розміщувати зображення, якщо ви не показуєте графічний глюк чи щось подібне.
Сергій Колодяжний


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

@sharkant Схоже, хтось змінив редагування у черзі на огляди, і це було схвалено, яке редагувало вашу публікацію після факту. Я думав, що система редагування SE не замінить нову редакцію на стару, але так, хто знає?
Зан Лінкс

Відповіді:


19

Вийдіть і увійдіть знову.

chshКоманда оновить /etc/passwdфайл, але це не змінює поточну оболонку , ні значення $SHELLзмінної в поточному оболонці (це не має ніякого способу зробити це). З цієї причини вам потрібно знову увійти; вам потрібно почати новий сеанс входу, щоб зміни набрали чинності.


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

1
@sharkant Справа в тому, що інформація, яку ви змінили /etc/passwd, не читається до наступного входу. Вам потрібно буде повністю вийти з системи та знову увійти, щоб зміни набрали чинності. Якщо ви цього не зробите, то перезавантаження машини також спрацює.
Кусалаланда

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

@sharkant Саме так воно працює! Я щасливий, що нарешті зрозумів, що ти неправильно уявив. Я оновлю відповідь.
Кусалаланда

1

Використання команди утиліти usermod працювало в моєму випадку. Працює на ubuntu 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.