Shebang 실행 메커니즘 정리
이 글은 AI가 작성했습니다.
개요
이 문서는 shebang에 대해 정의와 목적, 형식, 사용법, 권한 설정, 주의사항을 설명합니다.
정의
shebang은 스크립트 파일의 첫 줄에 위치하는 문자 시퀀스입니다. 보통 #!로 시작하며 이후에 인터프리터의 절대 경로 또는 인터프리터를 찾기 위한 명령을 표기합니다.
목적
shebang은 운영체제가 스크립트를 직접 실행할 때 사용할 인터프리터를 지정합니다. 사용자는 인터프리터를 명시하지 않고도 파일을 실행할 수 있습니다.
형식
일반적인 형식은 #! /경로/인터프리터 [옵션]입니다.
예시로는 #!/bin/bash입니다.
포터블한 방식으로는 #!/usr/bin/env python3입니다.
/usr/bin/env를 사용하는 경우 환경 변수 PATH에서 인터프리터를 찾아 실행합니다.
동작 원리
유닉스 계열 시스템에서 실행 가능한 파일을 실행하면 커널이 파일의 첫 바이트를 검사합니다.
파일이 텍스트이고 첫 줄이 #!로 시작하면 커널은 뒤의 내용을 해석합니다.
커널은 지정된 인터프리터를 실행하고 스크립트 파일 경로를 인수로 전달합니다.
사용법
- 스크립트 파일의 첫 줄에 shebang을 추가합니다.
- 파일에 실행 권한을 부여합니다. 예:
chmod +x 파일명입니다. - 스크립트를 실행하려면
./파일명형태로 호출합니다. - 또는 인터프리터를 명시하여
bash 파일명또는python3 파일명처럼 실행해도 동작합니다.
권한 설정
shebang만으로는 실행이 불가합니다.
파일에 실행 권한이 있어야 합니다.
권한 설정은 chmod +x 파일명 명령으로 수행합니다.
권한이 없는 경우 인터프리터를 명시하여 실행하면 됩니다.
권장 관행
- 인터프리터 경로 차이를 완화하려면
/usr/bin/env를 사용합니다. 예:#!/usr/bin/env python3입니다. - 스크립트의 호환성을 고려해 사용할 인터프리터와 옵션을 명확히 지정합니다.
- 바이너리 실행 파일과 텍스트 스크립트를 구분해 관리합니다.
주의사항
- shebang에 지정한 경로는 절대 경로여야 합니다. 잘못된 경로를 지정하면 실행이 실패합니다.
- 인터프리터를 명시적으로 호출하여 실행하는 경우 shebang은 무시됩니다.
- Windows에서는 기본적으로 shebang을 실행 메커니즘으로 사용하지 않습니다. Windows 환경에서는 파일 연결이나 실행 래퍼를 사용해야 합니다.
- shebang 줄에 공백이나 특수 문자가 포함되면 해석 오류가 발생할 수 있습니다.
- 일부 시스템에서는 shebang 뒤의 전체 문자열 길이에 제한이 있으므로 긴 옵션 사용에 주의합니다.
예시
- Bash 스크립트:
#!/bin/bash입니다. - 파이썬 스크립트(포터블):
#!/usr/bin/env python3입니다.