리눅스에서 기본 셸 변경하는 방법

셸은 리눅스 시스템과 소통할 수 있는 인터페이스입니다. 이를 통해 명령어를 입력하고 컴퓨터를 제어할 수 있습니다. 모든 리눅스 사용자에게는 기본 셸이 있으며, 대부분의 경우 bash입니다. Zsh, ksh, rc, fish 등 다양한 다른 옵션도 있습니다. 여기에서는 리눅스에서 기본 셸을 변경하는 다양한 방법을 보여줍니다.
목차
- 현재 셸 이름 찾기
- 설치된 모든 셸 목록
- Chsh를 사용하여 리눅스에서 기본 셸 변경
- 다른 사용자 셸 변경
- Usermod를 사용하여 리눅스에서 기본 셸 변경
- 리눅스에서 기본 셸 수동 변경
- 기본 셸의 대안
현재 셸 이름 찾기
기본 셸을 변경하기 전에 현재 사용 중인 셸을 아는 것이 좋습니다. 다음 echo 명령어를 사용하여 시스템 환경 변수를 확인하면 이를 알 수 있습니다:
echo $SHELL이 명령어는 현재 셸의 경로를 출력합니다. 예를 들어 /bin/bash 또는 /bin/zsh와 같은 경로입니다.
/etc/passwd 파일에는 중요한 사용자 계정 정보가 포함되어 있습니다. 이 파일을 사용하여 현재 셸을 찾을 수도 있습니다:
grep "^${USER}" /etc/passwdps 명령어를 사용하여 프로세스 ID(PID)를 확인하면 현재 셸에 대한 더 많은 정보를 찾을 수 있습니다:
ps -p $$이 출력은 현재 셸이 bash임을 확인합니다.
설치된 모든 셸 목록
현재 셸을 알았으니 시스템에서 사용 가능한 다른 옵션을 보고 싶을 수 있습니다. 시스템에 설치된 모든 셸을 찾으려면 /etc/shells 파일을 확인해야 합니다.
cat 명령어를 사용하여 시스템에서 사용 가능한 모든 셸 목록을 확인해 보겠습니다:
cat /etc/shells
이 목록은 전환할 수 있는 셸에 대한 아이디어를 제공합니다. 패키지 관리자를 사용하여 새로운 셸을 설치하고 이를 기본 셸로 사용할 수도 있습니다.
또한 기본 셸을 변경하지 않고도 나열된 셸을 임시로 사용해 볼 수 있습니다. 새로운 셸 세션을 시작하려면 터미널에 셸 이름을 입력하면 됩니다.
예를 들어 Zsh 셸을 사용해 보려면 다음과 같이 입력합니다:
zsh이렇게 하면 영구적으로 전환하기로 결정하기 전에 다양한 셸을 실험해 볼 수 있습니다.
Chsh를 사용하여 리눅스에서 기본 셸 변경
리눅스에서 기본 셸을 변경하는 가장 간단한 방법은 chsh 명령어를 사용하는 것입니다. chsh 명령어는 “change shell”의 약자로, -s 옵션과 함께 셸 경로를 입력하여 사용합니다.
셸 경로를 모르는 경우 터미널에서 type zsh를 실행하여 원하는 경로를 얻을 수 있습니다. 셸 경로를 얻은 후에는 기본 셸을 특정 셸로 변경할 수 있습니다.
예를 들어 Zsh로 전환하려면 Zsh 셸 경로와 함께 chsh -s를 사용해야 합니다:
chsh -s /bin/zsh비밀번호를 입력하라는 메시지가 표시됩니다. 비밀번호를 입력한 후에는 변경 사항을 확인하기 위해 로그아웃하고 다시 로그인해야 합니다.
chsh 명령어는 기본 로그인 셸을 영구적으로 변경합니다. 다음 명령어를 실행하여 변경 사항을 확인할 수 있습니다:
grep "^${USER}" /etc/passwd다른 사용자 셸 변경
루트 권한이 있고 sudo 명령어를 사용할 수 있는 경우 다른 사용자 계정의 기본 셸을 변경할 수 있습니다. 이는 다른 사용자에게 fish와 같은 다른 셸 환경을 제공하려는 경우 유용할 수 있습니다.
변경하려는 계정의 사용자 이름을 지정하는 추가 매개변수와 함께 동일한 chsh 명령어 구문을 사용할 수 있습니다.
예를 들어 다른 사용자의 셸을 Zsh로 변경하려면 터미널에서 다음 명령어를 실행합니다:
sudo chsh -s /bin/zsh user이 명령어는 특정 사용자의 기본 셸을 /bin/zsh에 위치한 Zsh 셸로 변경하라는 시스템에 지시합니다.
Usermod를 사용하여 리눅스에서 기본 셸 변경
셸을 전환하는 또 다른 방법은 usermod 명령어를 사용하는 것입니다. 이 명령어는 사용자 계정을 수정하는 데 사용되며 기본 셸을 변경하는 데에도 사용할 수 있습니다.
usermod를 사용하여 기본 셸을 변경하려면 루트 권한으로 터미널을 열고 다음 명령어를 입력합니다:
sudo usermod -s /path/to/new/shell your_username여기서 /path/to/new/shell을 원하는 셸 경로로, your_username을 실제 사용자 이름으로 바꿔야 합니다.
예를 들어 기본 bash 셸을 zsh로 변경해 보겠습니다:
sudo usermod -s /bin/zsh user이전과 마찬가지로 변경 사항을 적용하려면 리눅스 시스템에서 로그아웃하고 다시 로그인해야 합니다.
다음 명령어를 사용하여 새 셸로 전환되었는지 사용자 계정 세부 정보를 확인할 수 있습니다:
getent passwd user리눅스에서 기본 셸 수동 변경
/etc/passwd 파일을 편집하여 기본 셸을 수동으로 변경할 수도 있습니다. 기본 셸 경로를 새 셸로 바꾸면 됩니다. 그러나 이 기술은 잘못 수행할 경우 문제를 일으킬 수 있으므로 주의해야 합니다.
셸을 수동으로 변경하려면 루트 권한으로 좋아하는 텍스트 편집기(nano 또는 vim 등)를 사용하여 /etc/passwd 파일을 엽니다:
sudo nano /etc/passwd파일에서 사용자 이름을 찾습니다. 사용자의 항목에서 마지막 필드는 현재 셸을 보여줍니다. 이를 원하는 셸의 경로로 변경합니다.
예를 들어 기본 /bin/bash 셸 경로를 /bin/zsh로 변경해 보겠습니다:

마지막으로 Ctrl + S를 눌러 파일을 저장하고 Ctrl + X를 눌러 편집기를 종료합니다. 다시 로그아웃하고 로그인하여 변경 사항을 적용합니다.
기본 셸의 대안
Bash는 훌륭하고 강력한 스크립팅 도구이지만, 명령줄 경험을 향상시키고 더 나은 사용자 정의 옵션을 제공하는 여러 다른 셸이 있습니다:
Fish
fish는 Friendly Interactive Shell을 의미합니다. 이 셸은 직관적인 명령줄 인터페이스를 가지고 있으며, 구문 강조, 자동 제안 및 탭 완성을 통해 명령어 입력을 쉽게 만들어 줍니다.
fish는 또한 웹 기반 구성 도구를 포함하고 있습니다. 즉, 구성 파일을 깊이 파고들지 않고도 설정을 조정하고 함수를 생성할 수 있습니다.
Zsh
Zsh 또는 Z 셸은 매우 사용자 정의가 가능하며 유용한 기능이 많습니다. Zsh의 가장 좋은 기능 중 일부는 globbing, 자동 수정, 사용자 정의 구성 및 고급 탭 완성입니다.
Zsh는 플러그인과 테마도 지원하여 셸 경험을 원하는 대로 조정할 수 있습니다. Zsh를 사용하면 Git 브랜치를 표시하고 복잡한 파일 조작을 간단한 패턴으로 수행할 수 있습니다.
Ksh
ksh 또는 KornShell은 C 셸과 Bourne 셸의 가장 좋은 기능을 결합하여 강력하고 사용하기 쉬운 셸을 제공합니다. ksh의 일부 기능에는 내장 수학 함수, 명령줄 편집, 셸 스크립팅 및 확장성이 포함됩니다.
마무리
리눅스에서 기본 셸을 변경하는 것은 명령줄 경험을 향상시킬 수 있는 간단한 프로세스입니다. 파워 유저라면 다른 대체 리눅스 셸을 꼭 사용해 보아야 합니다.
이미지 출처: Lukas via Unsplash. 모든 스크린샷은 Haroon Javed에 의해 촬영되었습니다.