본문 바로가기
Unix

유닉스 시스템. Bourne Shell(보른 쉘, `sh`)

by mdesign 2024. 9. 5.

Bourne Shell(보른 쉘, `sh`)은 유닉스 시스템에서 가장 오래되고 중요한 쉘 중 하나로, 유닉스 시스템의 표준 쉘로 자리 잡은 첫 번째 쉘입니다. 이 쉘은 1979년에 Stephen Bourne이 AT&T 벨 연구소에서 개발했으며, 그 이름도 개발자의 이름을 따서 "Bourne Shell"이라고 붙여졌습니다.


 주요 특징

1. 기본 유닉스 쉘:

   - Bourne Shell은 유닉스 시스템의 기본 쉘로 널리 사용되었습니다. `/bin/sh` 경로에 위치하며, 많은 유닉스 시스템에서 기본 명령어 인터프리터로 제공됩니다.

 

2. POSIX 표준:

   - Bourne Shell은 POSIX 표준의 기초가 되었으며, 이는 유닉스 시스템 간의 호환성을 보장하는 중요한 역할을 합니다. 이로 인해 많은 유닉스 계열 운영 체제에서 기본적으로 제공되며, 다른 많은 쉘들이 이 쉘의 기능을 확장하거나 개선한 형태로 개발되었습니다.

 

3. 스크립트 작성:

   - Bourne Shell은 스크립트 작성에 매우 적합한 구조를 가지고 있습니다. 기본적인 제어 흐름(조건문, 반복문 등), 변수, 함수 등을 지원하여 복잡한 작업을 자동화하는 데 사용됩니다.
   - 쉘 스크립트는 `#!/bin/sh`로 시작하는 경우가 많으며, 이는 해당 스크립트를 Bourne Shell에서 실행하겠다는 의미입니다.

 

4. 기본 명령어:

   - Bourne Shell은 `echo`, `cd`, `set`, `unset`, `export`, `if`, `for`, `while` 등의 기본 명령어와 구문을 제공합니다. 이러한 명령어는 시스템 관리 작업 및 스크립트 작성에 필수적인 도구들입니다.

 

5. 입출력 리다이렉션:

   - Bourne Shell은 표준 입출력 및 오류 출력을 파일로 리다이렉트하거나 파이프(`|`)를 통해 다른 명령어에 연결하는 기능을 제공합니다. 예를 들어, `>`는 출력을 파일로 리다이렉트하고, `<`는 파일로부터 입력을 받는 데 사용됩니다.

 

6. 제어 구문:

   - Bourne Shell은 `if`, `else`, `for`, `while`, `case` 등 다양한 제어 구문을 지원하여, 복잡한 조건부 논리나 반복 작업을 간단히 처리할 수 있습니다.

 

7. 배치 처리:

   - Bourne Shell은 여러 명령어를 하나의 스크립트 파일에 작성하여 일괄적으로 처리할 수 있습니다. 이로 인해 시스템 관리 작업을 자동화하고 반복적인 작업을 줄일 수 있습니다.

 

8. 변수 처리:

   - Bourne Shell은 간단한 변수 정의와 참조를 지원합니다. 변수를 정의할 때는 `=` 기호를 사용하고, 참조할 때는 `$` 기호를 사용합니다. 예를 들어, `NAME="Bourne Shell"`로 변수를 정의하고, `echo $NAME`으로 변수를 참조할 수 있습니다.

 

 제한 사항

Bourne Shell은 매우 기본적인 쉘이기 때문에, 최신 쉘들(Bash, Zsh 등)에 비해 다음과 같은 제한이 있습니다:

- 명령어 자동 완성 및 히스토리 기능 부재: Bourne Shell은 명령어 자동 완성 기능이 없으며, 명령어 히스토리 기능도 제공하지 않습니다.
- 고급 기능 부족: 배열, 연산자 등의 고급 기능이 부족합니다. 이런 기능은 Korn Shell(Ksh)이나 Bash에서 지원됩니다.
- 스크립트 디버깅 기능 제한: 스크립트의 디버깅 도구와 기능이 제한적입니다.

 

 요약

Bourne Shell은 유닉스 시스템에서 가장 기본적이고 중요한 쉘로, 많은 쉘 스크립트와 유닉스 시스템 관리 작업의 기초를 이루고 있습니다. 비록 최신 쉘들에 비해 기능적으로는 제한적일 수 있지만, 여전히 많은 시스템에서 중요한 역할을 하고 있습니다. Bourne Shell은 특히 간단한 스크립트 작성이나, 호환성을 중시하는 환경에서 널리 사용됩니다.