보통 Shell을 쉘, Bash를 배쉬라고 많이 사용하지만, 정확한 표기법으론 /배시가 맞는 표기라고 하여 해당 문서는 표기법에 맞게 문서를 작성하였다.

Shell과 Bash의 차이점이 문득 궁금해졌다.

Shell의 경우 리눅스 파일이 .sh 확장자로 끝난다거나, 윈도우의 PowerShell, 간단한 파이프라인을 구축하면서 셸 스크립트를 작성해본 경험이 있어서 ‘Shell’이라는 말을 들어보았다.

Bash의 경우 리눅스(우분투) 환경에서 bash폴더나 Git Bash와 같은 곳에서 ‘Bash’라는 말을 들어보았다.

분명 윈도우, 맥, 리눅스 모든 환경에서 들어본 말인데 정확하게 무엇인지는 알지 못하고 사용하고 있었다고 생각되어 생각난 김에 조사해 보았다.

Shell & Bash

결과적으로 말하면 Bash는 Shell의 한 종류이다.

Shell

Shell 이란?

  • Unix 기반 운영체제에서 사용하는
  • 사용자운영체제 사이의 인터페이스로서 작동함
  • 사용자로부터 명령을 받아서 운영체제에게 전달하고, 그 결과를 사용자에게 다시 보여주는 역할

  • 위 그림처럼 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름이 붙었다고 한다.

Shell의 종류

  • Bourne Shell (sh)
    • 최초의 셸. 개발자인 Stephen Bourne의 이름을 따서 지어짐
  • C Shell (csh)
    • C언어 기반의 셸
  • TC Shell (tcsh)
    • C Shell의 확장판 (테넥스 C Shell)
    • 명령 행 완성과 명령 행 편집 기능을 추가한 것
  • Korn Shell (ksh)
    • David Korn에 의해 개발된 UNIX 기반의 확장 가능한 셸
  • Z Shell (zsh)
    • bash와 호환되면서도 다양한 향상된 기능을 제공하는 셸
    • 수 많은 셸들의 기능을 포함되어 많은 개선 사항들이 갖추어짐
  • Fish (the friendly interactive shell)
    • 사용자 친화적인 자동 완성 기능이 특징인 현대적인 셸
  • Bash (Bourne-Again Shell)
    • Bourne Shell을 대체하는 free software
    • GNU 프로젝트를 위해 Brian Fox가 작성한 유닉스 셸
    • GNU 운영 체제와 리눅스, 맥 OS X 그리고 다윈 등 운영 체제의 기본 셸로 탑재되어 광범위하게 배포됨
    • Bourne Shell의 기능을 포함하면서도, 추가적인 기능 (명령 줄 편집, job control, 배열 등)을 제공
    • 사용자 친화적 ← 핵심

즉, Shell은 Bash의 한 종류로써 본 셸의 확장판이라 생각하면 된다.

비유를 하자면…

  • Shell : 자동차의 총칭 (세단, SUV, 스포츠카 등)
  • Bourne Shell : 에쿠스
  • Bash : 제네시스

라고 하면 될 듯 하다…!

셸 스크립트

셸 환경에서 실행할 수 있는 명령어와 스크립트 언어의 구조(조건문, 반복문)를 나열해 놓은 것

  • 셸 스크립트는 텍스트 파일로 저장되며, 특정 쉘에서 해석되어 실행
  • 스크립트의 첫 줄에는 주로 해시뱅 (shebang) #!/bin/sh 또는 #!/bin/bash와 같은 구문이 포함되어, 해당 스크립트가 어떤 쉘에서 실행될지를 지정할 수 있다고 한다.

예시

#!/bin/bash

echo "Hello, World!"
  • "Hello, World!"를 출력하는 기능을 하는 셸 스크립트

따라서, 쉘 스크립트를 "쉘 환경에서 실행할 수 있는 명령어와 구문을 나열해 놓은 것"이라고 생각하면 된다!

참고자료

유닉스 셸

셸 스크립트

Bash 쉘 프로그래밍 - 1. 쉘 프로그래밍 ( Shell Programming )이란?

profile
🦕 궁금한게 많은 주니어 개발자

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN