본문 바로가기
Linux

[zsh] 사용자 Shell 확인 및 변경하기.

by ds31x 2023. 9. 8.

사실 linux를 따로 배운 적이 없이, 업무 중에 조금씩 익혀나간터라...

권장되는 방법인지 자신이 없다. ==;;


가장 쉬운 방법은 환경변수 SHELL을 확인하는 것임.

echo ${SHELL}

환경변수가 아닌 직접 설정 파일을 통해 사용자의 shell을 확인하고 변경하는 방법은

/etc/passwd를 열어서 확인하고 수정하는 것이다 (당연히 sudo를 이용해야 한다).

 

내가 주로 사용하는 id인 dsaint31에 대한 라인은 현재 다음과 같다.

dsaint31:x:1000:1000:,,,:/home/dsaint31:/home/linuxbrew/.linuxbrew/bin/zsh
  • zsh를 사용하고 있다. (brew를 통해 설치)
  • : colon이 separator이고 맨 마지막의 /home/dsaint31:/home/linuxbrew/.linuxbrew/bin/zsh이 shell에 해당한다.

다른 방법으로는 chsh을 이용하는 방법인데,
이 방법이 정상적으로 동작하려면 /etc/shells에 사용할 shell이 있어야 한다.
(문제는 Ubuntu에서 brewzsh를 설치하면 /etc/shells에 추가되지 않아서 chsh로 변경이 안된다.)

  • brewzsh을 설치한 경우, /etc/shellsbrew로 설치한 zsh의 위치를 추가한 후 수행한다.
chsh --shell /home/linuxbrew/.linuxbrew/bin/zsh <계정명>

 

위의 명령어를 수행하고 해당 계정으로 로그인하면 shell이 바뀌어 있음.

아니면 다음과 같이 확인해도 됨.

cat /etc/passwd|grep <계정명>

 

macOS에서는 다음과 같은 형태로 변경한다.

chsh -s /bin/bash
chsh -s /bin/zsh

첫라인은 bash로 쓰고 싶을 때, 두번째는 zsh로 쓰고싶을 때임.

다시 한번 말하지만 /etc/shells 에 바꿀 쉘이 있어야 함.


마지막으로 usermod를 사용할 수 있다. (가장 먼저 배운 방식인데... =.= 가장 사용하질 않는다.)

user modification보다는 change shell이 더 직관적이라 그런건지...

 

명령어의 방식은 chsh과 동일하다.

usermod --shell /bin/sh <계정명>
  • /bin/sh 부분이 바꾸고자 하는 shell이며 /etc/shells에서 고르면 된다.
728x90