chsh 명령을 사용하여 쉘을 변경할 수 없는 이유는 무엇입니까?

chsh 명령을 사용하여 쉘을 변경할 수 없는 이유는 무엇입니까?

나는 새로운 명령을 배웠습니다. 적어도 그렇게 생각합니다. 왜냐하면 이 명령은 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

답변1

로그아웃했다가 다시 로그인하세요.

chsh명령은 파일을 업데이트 /etc/passwd하지만 변경하지는 않습니다.현재의쉘은 현재 쉘의 변수 값도 아닙니다 $SHELL(그렇게 할 수는 없습니다). 이것이 바로 다시 로그인해야 하는 이유입니다. 변경 사항을 적용하려면 새 로그인 세션을 시작해야 합니다.

답변2

사용사용자 모드내 경우에는 유틸리티 명령이 작동합니다. 우분투 18.04에서 실행 중입니다.

  1. 먼저 현재 값을 확인하세요.

grep nameofuser /etc/passwd

  1. 변화

sudo usermod --shell /bin/bash nameofuser

  1. 확인하세요

grep nameofuser /etc/passwd

관련 정보