echo $SHELL은 기본 쉘을 zsh로 변경한 후에도 "/bin/bash"를 출력으로 표시합니다.

echo $SHELL은 기본 쉘을 zsh로 변경한 후에도 "/bin/bash"를 출력으로 표시합니다.

기본 쉘을 변경하기 위해 이 답변을 참조했습니다.기본 쉘을 ZSH로 변경하는 방법 - chsh에 "잘못된 쉘"이 표시됩니다.

zsh를 추가 /etc/shells하고 실행한 후 sudo chsh -s "$(command -v zsh)" "${USER}"실행했습니다 echo $SHELL(그런데 출력이 없으므로 성공적으로 실행되었을 것이라고 생각했습니다)./bin/bash

쉘을 닫고 새 쉘 세션을 열었고 zsh가 나타났기 때문에 다시 시작하면 문제가 해결되었을 것이라고 생각했습니다. 그런 다음 echo $SHELLzsh 세션에서 실행해도 여전히 동일한 출력이 표시되고 /bin/bash``$SHELL --version대신 bash 버전도 제공되었습니다. zsh 하나

ctrl+alt+t를 할 때마다 zsh 세션이 발생하지만 이 echo $SHELL출력은 의심스럽습니다.

업데이트: 저는 Ubuntu Budgie 18.04.3을 실행 중이고 다음 /bin/zsh으로 시작했습니다.echo $0

답변1

SHELL환경 변수는 로그아웃했다가 다시 로그인하거나 전체 로그인을 수행하는 su - "$USER"또는 ssh "$USER@localhost"기타 명령을 사용하는 등 전체 로그인을 수행하는 경우에만 설정됩니다 .

일반적으로 login프로그램은 데이터베이스에 있는 사용자 로그인 셸의 내용을 기반으로 이 변수를 설정합니다 passwd. 프로세스가 사용자의 로그인 요청을 수락할 때마다(예: 등을 통해 sshd) gdm이는 로그인 프로세스의 일부라고 합니다.

login(1)우분투 매뉴얼 에서 :

사용자 및 그룹 ID는 /etc/passwd파일의 값에 따라 설정됩니다. $HOME, $SHELL, $PATH및 값 $LOGNAME$MAIL비밀번호 항목의 해당 필드에 따라 설정됩니다. Ulimit, umask 및 nice 값은 GECOS 필드의 항목을 기반으로 설정할 수도 있습니다.

단순히 새 셸 세션을 시작하면 셸이 "로그인 셸"로 시작되더라도 이 변수의 값이 설정되지 않습니다.

답변2

Kusalananda의 우수하고 수용 가능한 답변에 추가하고 싶습니다.

macOS에서 GUI를 종료하지 않고 변경 사항을 보려면 터미널에 다음을 입력하면 됩니다.

$ logout [your username]

그런 다음 새 터미널 세션을 열고 다음을 입력하십시오.

echo $SHELL

새로운 환경 설정이 표시됩니다.

관련 정보