Bash

Bash(Bourne Again Shell)는 GNU 프로젝트를 위해 개발된 UNIX 계열 명령 인터프리터이자 스크립트 언어다. Brian Fox가 1989년에 처음 공개했으며, 이후 Chet Ramey 등 개발자가 유지·발전시켜 왔다. 기본적으로 Stephen Bourne의 셸 sh와...

정식 명칭Bourne Again Shell
분류셸, 스크립트 언어, 명령 인터프리터
개발자Brian Fox; 이후 Chet Ramey 등
최초 공개1989년
개발 주체GNU 프로젝트
선행 언어Bourne shell (sh)
관련 셸KornShell, C shell
패러다임명령형 프로그래밍, 명령 조합
실행 방식명령 해석, 프로세스 실행
주요 파일셸 스크립트 .sh 및 실행 파일
활용대화형 셸, 시스템 자동화
표준 기반POSIX Shell과 확장 문법
라이선스GNU GPL
공식 문서GNU Bash Manual

Bash(Bourne Again Shell)는 GNU 프로젝트를 위해 개발된 UNIX 계열 명령 인터프리터이자 스크립트 언어다. Brian Fox가 1989년에 처음 공개했으며, 이후 Chet Ramey 등 개발자가 유지·발전시켜 왔다. 기본적으로 Stephen Bourne의 셸 sh와 호환되는 문법을 제공하면서 Korn shell과 C shell에서 알려진 대화형 편집, 작업 제어와 편의 기능을 도입했다. GNU/Linux의 여러 배포판과 UNIX 계열 시스템에서 일상적인 명령 실행과 자동화를 위한 대표적인 셸로 사용된다.[1]

Bash에서는 하나의 명령을 직접 실행하거나 명령 여러 개를 파이프로 연결해 표준 입력과 출력을 전달할 수 있다. 리다이렉션을 통해 파일과 명령의 입출력을 연결하고, 프로세스의 종료 상태를 조건 분기와 작업 흐름의 판단 기준으로 활용한다. 변수, 조건문, 반복문과 함수 정의도 지원하므로 텍스트 파일에 명령을 저장해 순차 실행하는 것 이상의 복잡한 시스템 작업을 구현할 수 있다.

언어는 매개변수 확장, 명령 치환, 산술 확장, 배열과 문자열 패턴 매칭 같은 기능을 제공한다. 그러나 일반적인 컴파일 언어와 달리 셸 명령·단어 분리·인용 규칙·파일 이름 확장 등이 프로그램 의미에 큰 영향을 준다. 같은 문자열을 작성하더라도 따옴표의 사용 여부에 따라 인수가 분리되거나 와일드카드가 확장될 수 있어, 소스의 의미는 외부 명령 실행과 셸의 확장 순서를 함께 이해해야 정확하게 결정된다.[2]

Bash는 터미널에서 명령을 입력하는 대화형 방식과 파일을 읽는 비대화형 스크립트 방식을 모두 지원한다. 운영체제 설치와 배포, CI 작업, 파일 처리와 프로세스 관리 등에 널리 쓰이며, POSIX 호환 셸 프로그램도 상당 부분 실행할 수 있다. 다만 Bash 전용 문법과 POSIX 셸의 공통 문법은 구별되므로, 다른 셸에서 실행할 스크립트는 그 실행 환경에 맞춰 작성해야 한다.

역사

Bourne shell

GNU Bash의 개발

주요 버전

셸 실행 모델

대화형 실행

셸 스크립트

프로세스와 종료 상태

문법

토큰과 인용

변수와 확장

함수

조건문과 반복문

명령 실행

파이프라인

리다이렉션

작업 제어

서브셸

데이터 처리

배열과 문자열

패턴 매칭

정규 표현식

표준과 호환성

POSIX Shell

Bash 확장

다른 셸과의 차이

개발과 진단

스크립트 디버깅

정적 분석

활용 분야

관련 문서

  1. GNU Bash Reference Manual ↩
  2. GNU Bash: Shell Syntax ↩