리눅스 운영 체제의 셸 또는 명령 줄 인터페이스는 시스템과 상호 작용하는 강력한 방법을 제공하여 중요한 구성 요소입니다.
리눅스 시스템의 각 사용자는 시스템과 상호 작용할 때 사용하는 명령 해석기를 결정하는 기본 셸과 연결됩니다.
사용자의 기본 셸을 변경하는 것은 개인 취향 또는 다른 셸에서 제공하는 특정 기능의 필요성과 같은 다양한 이유로 필요할 수 있습니다.
이 기사에서는 리눅스에서 사용자의 기본 셸을 변경하는 프로세스를 살펴보겠습니다. 셸은 명령을 받아들이고 해석하는 프로그램입니다. 여러 개의 오픈 소스 셸이 있으며 bash, sh, ksh, zsh, fish 등 다양한 알려진 셸이 리눅스에서 사용할 수 있습니다.
리눅스 Bash 셸
Bash (/bin/bash)는 대부분의 경우에 인기있는 셸이며 사용자 계정의 기본 셸로 보통 설정되어 있습니다.
리눅스에서 사용자 셸을 변경하는 몇 가지 이유는 다음과 같습니다:
- Linux에서 nologin 쉘을 사용하여 일반 사용자 로그인을 차단하거나 비활성화합니다.
- 사용자 명령을 쉘로 전송하기 전에 기록하는 쉘 래퍼 스크립트나 프로그램을 사용합니다. 여기서 쉘 래퍼를 사용자의 로그인 쉘로 지정합니다.
- 사용자의 요구를 충족하기 위해(특정 쉘을 사용하려는 경우, 특히 관리 권한이 있는 경우)
useradd 또는 adduser 유틸리티를 사용하여 사용자 계정을 생성할 때, --shell
플래그를 사용하여 해당 구성 파일에서 지정된 것과 다른 사용자의 로그인 쉘 이름을 지정할 수 있습니다.
A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.
Linux 시스템에서 사용 가능한 쉘 목록 표시
Linux에서 /etc/shells 파일은 시스템에 설치된 유효한 로그인 쉘 목록을 저장하는 데 일반적으로 사용됩니다. 이 파일은 사용자가 chsh와 같은 명령을 사용하여 기본 쉘로 설정할 수 있는 쉘을 식별하는 데 도움이 됩니다.
Linux 시스템에서 사용 가능한 쉘 목록을 보려면 다음 명령을 사용할 수 있습니다:
cat /etc/shells
예시 출력:
# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /usr/bin/tmux /usr/bin/screen
더 진행하기 전에 다음을 주의하십시오:
- A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
- /etc/shells 파일에 나열되지 않은 쉘은 root만 실행할 수 있습니다.
- 계정에 제한된 로그인 쉘이 있는 경우 해당 사용자의 쉘을 변경할 수 있는 권한이 있는 것은 root뿐입니다.
Linux에서 현재 쉘 찾기
기본 사용자의 쉘을 변경하기 전에, 현재 쉘을 확인하는 것이 중요합니다. 다음과 같은 echo 명령어를 실행하면 로그인한 사용자의 현재 쉘을 표시합니다.
echo $SHELL /bin/bash
출력 결과는 사용자가 현재 Bash (/bin/bash) 쉘을 사용하고 있음을 보여줍니다.
리눅스에서 기본 쉘 변경하기
이제 기본 리눅스 사용자 쉘을 변경하는 세 가지 다른 방법에 대해 설명하겠습니다.
1. usermod 유틸리티
usermod 명령어는 /etc/passwd 파일에 저장된 사용자 계정 세부 정보를 수정하는 데 사용되며, -s
또는 --shell
옵션을 사용하여 사용자의 로그인 쉘을 변경합니다.
이 예제에서는 먼저 사용자 tecmint의 계정 정보를 확인하여 기본 로그인 쉘을 확인한 후 /bin/sh에서 /bin/bash로 로그인 쉘을 변경하는 방법을 설명합니다.
grep tecmint /etc/passwd sudo usermod --shell /bin/bash tecmint grep tecmint /etc/passwd

이제 사용자 “tecmint”의 기본 쉘이 bash로 변경됩니다.
2. chsh 유틸리티
chsh 명령어는 -s
또는 –shell 옵션을 사용하여 상호 작용적으로 사용자의 기본 로그인 쉘을 변경하는 데 사용됩니다.
grep tecmint /etc/passwd sudo chsh --shell /bin/sh tecmint grep tecmint /etc/passwd

사용자가 설정하고자 하는 쉘의 실제 경로로 “/bin/sh“를 교체하세요. 예를 들어, sh를 쉘로 설정하려면 ““/bin/sh”를 사용하면 됩니다.
기본 쉘의 변경 사항은 일반적으로 다음 로그인 시 적용된다는 점에 유의하세요.
위의 두 가지 방법 모두 /etc/passwd 파일에 지정된 쉘을 수정합니다. 세 번째 방법과 같이 수동으로 편집할 수도 있습니다.
3. /etc/passwd 파일에서 사용자 쉘 변경
이 방법에서는 즐겨 사용하는 명령줄 텍스트 편집기를 사용하여 /etc/passwd 파일을 열고 특정 사용자의 쉘을 변경하세요.
sudo vi /etc/passwd OR sudo nano /etc/passwd

원하는 사용자에 대한 라인을 찾습니다. 예를 들어 다음과 같은 라인이 있다고 가정합니다:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
마지막 필드인 /bin/bash는 기본 쉘을 나타냅니다(이 경우 Bash임).
원하는 쉘로 쉘 필드의 값을 변경하려면 다음과 같이 쉘의 경로(/bin/zsh)를 지정하세요.
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
파일 편집을 마치면 저장하고 닫습니다.
다른 쉘을 어떻게 설치하나요?
다른 소프트웨어 패키지와 마찬가지로 Zsh, Fish와 같은 인기 있는 쉘은 다음과 같이 배포판의 저장소에서 쉽게 설치할 수 있습니다.
Linux에서 Zsh Shell 설치
Zsh를 설치하려면 다음 명령어를 사용하세요.
sudo apt install zsh [On Debian, Ubuntu and Mint] sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/zsh [On Gentoo Linux] sudo apk add zsh [On Alpine Linux] sudo pacman -S zsh [On Arch Linux] sudo zypper install zsh [On OpenSUSE]
Fish Shell 설치하기
Linux에서 Zsh를 설치하려면 특정 Linux 배포판에 맞는 적절한 명령어를 사용하세요.
sudo apt install fish [On Debian, Ubuntu and Mint] sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/fish [On Gentoo Linux] sudo apk add fish [On Alpine Linux] sudo pacman -S fish [On Arch Linux] sudo zypper install fish [On OpenSUSE]
다음 관련 주제를 읽지 마세요:
이 기사에서는 Linux에서 사용자의 쉘을 변경하는 다양한 방법을 설명했습니다. 우리와 생각을 공유하고 싶으시면 아래 댓글 섹션을 이용해주세요.
Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/