반응형
셔뱅(Shebang, #!) 이란?
셸 스크립트의 첫 줄에 작성되는
#!/bin/bash
같은 구문을 **셔뱅(Shebang)**이라고 합니다.
이는 스크립트 실행 시 **어떤 프로그램(해석기, Interpreter)**로 이 파일을 해석할지를 지정하는 역할을 합니다.
1. 셔뱅의 동작 원리
- 사용자가 스크립트를 실행 (./script.sh)
- 운영체제는 파일 첫 두 글자(#!)를 확인
- 그 뒤에 지정된 경로의 프로그램을 실행하여, 해당 프로그램이 스크립트 내용을 처리
- 예:→ /bin/bash script.sh 명령과 동일하게 동작
- #!/bin/bash echo "Hello"
2. 셔뱅이 중요한 이유
- 환경에 따라 기본 셸이 다르기 때문
- 어떤 시스템은 /bin/sh가 기본, 또 어떤 시스템은 /bin/bash 또는 /usr/bin/zsh일 수 있음.
- 명령어 문법이 셸마다 다를 수 있으므로, 실행 환경을 명확히 지정해야 함.
- 스크립트의 이식성(Portability) 확보
- 개발 환경과 운영 환경이 달라도 동일한 해석기를 사용하여 실행 가능.
- 오류 방지
- Bash 문법을 썼는데 /bin/sh로 실행되는 경우, 일부 문법이 동작하지 않아 에러 발생 가능.
3. 주요 셔뱅 예시
셸 종류 | 셔뱅 예시 | 설명 |
Bash | #!/bin/bash | 가장 널리 사용되는 GNU Bourne Again Shell |
POSIX sh | #!/bin/sh | 최소한의 POSIX 호환 셸 |
Zsh | #!/bin/zsh | 강력한 자동완성·테마 지원 |
Ksh | #!/bin/ksh | Korn Shell |
Python | #!/usr/bin/env python3 | 파이썬 스크립트 실행 시 |
Perl | #!/usr/bin/perl | Perl 스크립트 실행 시 |
4. /usr/bin/env를 이용한 셔뱅
- 특정 경로가 아닌, 환경 변수 PATH에서 찾은 실행 파일을 사용.
- 이 방식은 여러 환경에서 경로가 다를 때 유용.
- 예:→ 시스템 PATH에서 bash를 찾아 실행.
- #!/usr/bin/env bash
5. 셔뱅이 없는 경우
- 파일을 직접 실행(./script.sh)하려고 하면 "Permission denied" 또는 "Command not found" 오류 가능.
- 셔뱅 없이 실행하려면:처럼 명시적으로 해석기를 지정해야 함.
- bash script.sh sh script.sh
정리
- 셔뱅은 스크립트의 실행 해석기를 지정하는 매우 중요한 첫 줄.
- /usr/bin/env 방식은 경로가 다른 환경에서도 호환성 높임.
- 잘못된 셸 지정은 문법 오류나 실행 불가 문제를 유발할 수 있음.
'리눅스 > 리눅스 응용' 카테고리의 다른 글
네임스페이스(Namespace)의 개념 (3) | 2025.08.15 |
---|---|
프로그램, 프로세스, 스레드의 개념 (3) | 2025.08.14 |
NCP 마켓플레이스용 Application Image 만들기 (2) | 2025.08.10 |
Git 환경을 확인하는 방법 (0) | 2025.06.27 |
Git의 작업 메커니즘 (2) | 2025.06.26 |