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



답변

로그 아웃했다가 다시 로그인하십시오.

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


답변

사용 하고 usermod 유틸리티 명령은 내 경우했다. 우분투에서 실행 18.04.

  1. 먼저 현재 값 확인

grep nameofuser /etc/passwd

  1. 그것을 바꾸다

sudo usermod --shell /bin/bash nameofuser

  1. 그것을 확인

grep nameofuser /etc/passwd


답변