보통 Shell을 쉘, Bash를 배쉬라고 많이 사용하지만, 정확한 표기법으론 셸/배시가 맞는 표기라고 하여 해당 문서는 표기법에 맞게 문서를 작성하였다.
Shell과 Bash의 차이점이 문득 궁금해졌다.
Shell의 경우 리눅스 파일이 .sh 확장자로 끝난다거나, 윈도우의 PowerShell, 간단한 파이프라인을 구축하면서 셸 스크립트를 작성해본 경험이 있어서 ‘Shell’이라는 말을 들어보았다.
Bash의 경우 리눅스(우분투) 환경에서 bash폴더나 Git Bash와 같은 곳에서 ‘Bash’라는 말을 들어보았다.
분명 윈도우, 맥, 리눅스 모든 환경에서 들어본 말인데 정확하게 무엇인지는 알지 못하고 사용하고 있었다고 생각되어 생각난 김에 조사해 보았다.
결과적으로 말하면 Bash는 Shell의 한 종류이다.
Bourne Shell (sh)
C Shell (csh)
TC Shell (tcsh)
C Shell
의 확장판 (테넥스 C Shell)Korn Shell (ksh)
Z Shell (zsh)
Fish (the friendly interactive shell)
Bash (Bourne-Again Shell)
Bourne Shell
을 대체하는 free softwareBourne Shell
의 기능을 포함하면서도, 추가적인 기능 (명령 줄 편집, job control, 배열 등)을 제공즉, Shell은 Bash의 한 종류로써 본 셸의 확장판이라 생각하면 된다.
비유를 하자면…
라고 하면 될 듯 하다…!
셸 환경에서 실행할 수 있는 명령어와 스크립트 언어의 구조(조건문, 반복문)를 나열해 놓은 것
#!/bin/sh
또는 #!/bin/bash
와 같은 구문이 포함되어, 해당 스크립트가 어떤 쉘에서 실행될지를 지정할 수 있다고 한다.#!/bin/bash
echo "Hello, World!"
따라서, 쉘 스크립트를 "쉘 환경에서 실행할 수 있는 명령어와 구문을 나열해 놓은 것"이라고 생각하면 된다!