Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 셸(Shell) 완벽 가이드: 핵심 개념부터 실전 사용법까지

소비자용 리눅스 배포판은 강력한 그래픽 사용자 인터페이스(GUI)를 제공합니다. 하지만 리눅스는 1970년대 유닉스(Unix) 세계에서 탄생한 운영체제인 만큼, 특정 GUI에 의존하지 않는 아키텍처 위에서 동작합니다.

시스템으로 들어가는 텍스트 기반 진입점을 셸(shell)이라고 부르며, 리눅스는 여러 종류의 셸을 지원합니다.

리눅스 셸(Shell) 완벽 가이드: 핵심 개념부터 실전 사용법까지

셸이란 무엇인가?

셸은 컴퓨터 운영체제와 텍스트 기반으로 상호작용하는 방식으로, 흔히 명령 해석기(command interpreter)라고 불리는 기능을 수행합니다. 셸은 자체적인 문법과 논리 체계를 갖추고 있으며, 로그인한 사용자와 커널(kernel) 사이에서 중개자 역할을 합니다. 또한 시스템 유틸리티나 사용자가 직접 설치한 애플리케이션 같은 다른 프로그램들을 실행하는 통로이기도 합니다.

리눅스에서 대표적으로 지원되는 셸은 다음과 같습니다.

  • Bash: 대부분의 최신 리눅스 배포판에서 기본 셸로 채택되고 있습니다. 명령 히스토리, 명령줄 편집, 명령 별칭(alias), 기본적인 작업 제어 기능을 갖추고 있어 대화형 사용에 최적화되어 있습니다.
  • Fish: 사용자 친화성을 중점적으로 설계된 셸로, 명령 자동 완성, 사용자 스크립트, 고급 터미널 기능이 돋보입니다. 역시 대화형 사용에 특화되어 있습니다.
  • Ksh: 콘 셸(Korn Shell)은 그 자체로 하나의 고급 프로그래밍 언어이며, 동시에 대화형 지원 성능도 매우 뛰어납니다.
  • Zsh: 파워 유저에게 인기가 많은 셸로, 고급 스크립팅 기능과 폭넓은 커스터마이징 옵션을 제공하며 다양한 인덱싱 기능도 지원합니다.

셸은 원하는 만큼 몇 가지든 자유롭게 설치할 수 있습니다. 기본 셸은 오직 하나만 지정되지만, 셸 안에서 또 다른 셸을, 그 안에서 또 셸을 실행하는 식의 중첩 사용도 전혀 문제되지 않습니다. 현재 배포판에 어떤 셸들이 설치되어 있는지 확인하려면 터미널에서 cat /etc/shells 명령을 실행하면 됩니다.

한 가지 주의할 점은, 셸과 터미널(terminal)은 서로 다른 개념이라는 것입니다. 터미널은 셸 세션이 구동되는 그래픽 프로그램을 의미합니다. 일반적으로 셸 세션을 실행하려면 터미널이 필요하지만, 두 요소는 서로 묶여 있지 않습니다. 즉, 하나의 터미널 프로그램으로 어떤 셸이든 실행할 수 있고, 반대로 어떤 셸이든 어떤 터미널 프로그램에서든 구동할 수 있습니다.

참고로 마이크로소프트 윈도우와 애플 macOS에도 셸이 포함되어 있습니다. 윈도우에서는 셸을 명령 프롬프트(Command Prompt)라고 부르며, 최신 버전 윈도우는 PowerShell을 함께 지원합니다. macOS에서는 터미널(Terminal) 앱을 실행하면 셸 세션이 열립니다. 리눅스 관련 글 중에는 셸 세션을 '명령 프롬프트'라고 표현하는 경우도 있지만, 엄밀히 말해 Command Prompt는 마이크로소프트 고유의 명칭입니다.

셸 세션은 왜 사용해야 할까?

일반적인 홈 데스크톱 리눅스 사용자라면 셸 세션을 꼭 사용해야 하는 경우는 드뭅니다. 현대의 리눅스는 강력한 GUI 제어판을 제공하기 때문에, 대부분의 평범한 데스크톱 환경 설정은 GUI 안에서 충분히 처리할 수 있기 때문입니다.

하지만 리눅스는 수많은 배포판과 열두 가지가 넘는 데스크톱 환경을 지원하는 만큼, '리눅스에서 어떤 작업을 하는 방법'에 대한 기본적인 안내조차도 순식간에 복잡해질 수 있습니다. 설명이 특정 데스크톱 환경에 맞춰져 있지 않다면, 단계별 절차는 배포판마다 — 때로는 크게 — 달라지기 때문입니다. 바로 이런 이유 때문에 리눅스 관련 사용법이나 문제 해결 조언은 대부분 셸 명령을 중심으로 제공됩니다.

예를 들어, 리눅스 컴퓨터에서 현재 실행 중인 프로그램 목록을 확인하는 과정을 생각해 보겠습니다. GUI에서는 배포판마다 방법이 다릅니다. 우분투(Ubuntu) 20.04에서는 런처를 연 뒤 시스템 모니터(System Monitor)를 선택해야 하고, openSUSE Tumbleweed에서는 K 메뉴의 System 폴더에서 KSysGuard를 실행해야 합니다. 게다가 GUI 도구마다 화면 구성과 기능이 제각각이라, 서로 다른 단계별 지침과 경우에 따라서는 스크린샷까지 필요합니다. 그러나 어떤 배포판이든 셸 세션에서 ps -ax 한 줄만 입력하면 동일한 방식으로 동일한 결과를 얻을 수 있습니다.

리눅스 셸 사용 방법

텍스트만 있는 환경에서 생활하는 것이 생각보다 어렵지 않습니다. 실제로 수많은 리눅스 애호가들은 사실상 셸 안에서 삽니다. 시작하는 방법은 간단합니다. 사용 중인 배포판의 터미널 프로그램(또는 이에 상응하는 프로그램)을 실행하세요. 창이 열리면 새로운 셸 세션에 진입한 상태가 됩니다.

작업을 마친 뒤에는 exit 명령을 입력하거나 터미널 프로그램을 닫으면 됩니다.

셸마다 고유한 기능은 다르지만, 디렉터리를 이동하는 cd 명령이나 파일 내용을 출력하는 cat 명령처럼 공통적으로 사용되는 리눅스 유틸리티는 모든 셸에서 동일하게 작동합니다. 자신이 사용하는 셸의 고유한 문법을 익혀 두면, 셸이 지닌 강력한 기능을 마음껏 활용할 수 있습니다.