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

리눅스에서 기본 셸 변경 기능 이미지

셸은 리눅스 시스템과 소통할 수 있는 인터페이스입니다. 이를 통해 명령어를 입력하고 컴퓨터를 제어할 수 있습니다. 모든 리눅스 사용자에게는 기본 셸이 있으며, 대부분의 경우 bash입니다. Zsh, ksh, rc, fish 등 다양한 다른 옵션도 있습니다. 여기에서는 리눅스에서 기본 셸을 변경하는 다양한 방법을 보여줍니다.

목차

  • 현재 셸 이름 찾기
  • 설치된 모든 셸 목록
  • Chsh를 사용하여 리눅스에서 기본 셸 변경
  • 다른 사용자 셸 변경
  • Usermod를 사용하여 리눅스에서 기본 셸 변경
  • 리눅스에서 기본 셸 수동 변경
  • 기본 셸의 대안

현재 셸 이름 찾기

기본 셸을 변경하기 전에 현재 사용 중인 셸을 아는 것이 좋습니다. 다음 echo 명령어를 사용하여 시스템 환경 변수를 확인하면 이를 알 수 있습니다:

echo $SHELL

이 명령어는 현재 셸의 경로를 출력합니다. 예를 들어 /bin/bash 또는 /bin/zsh와 같은 경로입니다.

/etc/passwd 파일에는 중요한 사용자 계정 정보가 포함되어 있습니다. 이 파일을 사용하여 현재 셸을 찾을 수도 있습니다:

grep "^${USER}" /etc/passwd

ps 명령어를 사용하여 프로세스 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로 변경해 보겠습니다:

/etc/passwd 텍스트 편집기에서 기본 bash 셸을 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에 의해 촬영되었습니다.