Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Zsh vs Bash – 어떤 셸을 사용해야 할까?

Bash와 Zsh는 리눅스에서 가장 널리 사용되는 두 가지 셸입니다. 이 글에서는 두 셸의 장단점을 비교해 보고, 어떤 상황에서 어느 쪽이 더 적합한지 살펴보겠습니다.

셸(Shell)이란 무엇일까요?

셸(shell)은 컴퓨터와 상호작용하기 위해 사용하는 명령줄 사용자 인터페이스입니다.

셸은 텍스트 입력과 출력을 제공하여 컴퓨터 시스템에 명령을 전달하고 그 결과를 받아볼 수 있게 해 줍니다.

또한 셸은 작업 자동화를 위한 스크립팅 기능과, 파일 시스템 탐색 속도를 높여 주는 자동 완성 같은 편의 도구까지 포괄합니다.

Bash와 Zsh 모두 셸입니다. 운영체제의 핵심인 커널(kernel) 바깥쪽을 감싸고 있다고 하여 '셸'이라는 이름이 붙었습니다.

Bash란?

Bash("Bourne Again SHell"의 약자)는 1970년대에 등장한 본 셸(Bourne Shell)을 대체하기 위해 1980년대 후반에 출시되었습니다.

본 셸 자체도 1971년 최초의 유닉스 셸인 톰슨 셸(Thompson shell)을 대체하기 위해 만들어진 것입니다.

Bash는 기존 셸 스크립트와 호환되면서도 완전히 자유로운 셸을 지향했습니다. 그 덕분에 빠르게 인기를 얻어 리눅스 운영체제의 기본 셸이 되었고, 이후 Apple의 OS X 계열 운영체제에서도 기본 셸로 채택되었습니다.

Bash의 주요 기능은 다음과 같습니다:

  • 명령줄 자동 완성 (Tab 키를 눌러 파일 경로를 일일이 입력하지 않고 자동으로 채우기)
  • 외부 소프트웨어 없이 산술 연산 수행 가능
  • 명령 출력을 손쉽게 리디렉션
  • 명령에서 정규 표현식 사용 가능
  • 시작 시 스크립트를 실행해 자신만의 환경으로 커스터마이징

Zsh란?

Zsh("Z Shell")은 본 셸의 확장 버전으로, Bash의 많은 기능과 개선 사항을 함께 담고 있습니다.

Zsh는 플러그인과 테마를 지원하며, 확장된 기능들은 Bash보다 크게 발전된 것으로 평가받습니다.

Zsh의 인기가 높아지고 있음을 보여주는 가장 큰 증거는 Apple이 MacOS 운영체제의 기본 셸로 Zsh를 채택했다는 점입니다. 결코 가볍게 내린 결정은 아니었을 것입니다.

Zsh가 Bash에 비해 개선된 주요 기능은 다음과 같습니다:

  • 플러그인과 테마 지원!
    • 오버레이, 색상 테마 등으로 Zsh를 마음껏 꾸밀 수 있습니다 – 가장 필요한 정보만 보여주도록 셸을 맞춤 설정해 보세요
    • oh my zsh!는 Zsh용 플러그인 프레임워크로, 거의 모든 용도에 맞는 방대한 플러그인을 활용할 수 있습니다
  • 파일 시스템 탐색 명령 개선 – 긴 경로에서 디렉터리 이름이나 각 디렉터리의 첫 글자만 입력해도 Zsh가 가장 유력한 후보로 자동 완성해 줍니다
    • 경로 입력 시 오타가 있어도 가장 근접한 디렉터리로 안내해 주는 등 꽤 관대한 편입니다
  • 부동소수점 숫자 지원!
  • zmv 명령으로 대량의 파일 작업이 한결 수월해집니다
  • 외부 소프트웨어 없이 파일 패턴 지정 가능
  • 네임드 디렉터리(named directories) – 웹 디렉터리 경로를 매번 입력하거나 심볼릭 링크를 만들 필요 없이 ~webdir 같은 단축 이름을 설정할 수 있습니다

Zsh vs. Bash

스크립트 호환성은 어떨까?

Bash가 오랫동안 압도적인 인기를 누려온 탓에, 셸 스크립트는 흔히 bash 스크립트(Bash Scripts)라고 불립니다.

한 셸용으로 작성된 스크립트가 다른 셸에서 반드시 실행되는 것은 아니지만, 다행히 Zsh는 대부분의 기존 Bash 스크립트를 큰 수정 없이 실행할 수 있습니다. 다만 Zsh에서 제공하는 향상된 기능을 활용하려면 스크립트를 업데이트해 두는 것이 좋습니다.

기존 Bash 스크립트를 계속 사용할 계획이라면, 스크립트 시작 부분에 다음 줄을 반드시 포함하세요:

#!/bin/bash

이렇게 하면 컴퓨터와 상호작용하는 기본 셸이 Zsh로 설정되어 있더라도, 시스템이 해당 스크립트를 Bash로 실행하게 됩니다.

어떤 셸을 선택해야 할까?

기존에 작성된 Bash 스크립트나 예제를 참조해야 하는 환경이라면 Bash를 고수하는 것이 좋습니다. 반면 새로운 환경을 구축하며 Zsh의 추가 기능을 활용하고 싶고, 새 셸에 맞게 스크립트 코드를 조정하는 데 부담이 없다면 Zsh를 선택하세요.

더 많은 리눅스 팁이 궁금하다면 이 링크를 클릭해 확인해 보세요!