kernel 한테 뭘 할지 알리는 두 글자
./script.sh 실행 시 kernel 이 첫 2 바이트 읽음. #! (shebang) 이면 첫 줄 나머지가 interpreter 경로. kernel 이 그 interpreter 에 스크립트를 인자로 전달.
휴대성 있는 모양
#!/usr/bin/env bash
#!/usr/bin/env zsh
#!/usr/bin/env python3
#!/bin/sh/usr/bin/env 가 PATH 에서 binary 찾음. Apple bash 가 /bin/bash, Linux 가 /usr/bin/bash 인 경우 다 통함. /bin/bash 하드코딩은 macOS 엔 OK 지만 미니멀 Linux 컨테이너엔 깨짐.
실행 권한
chmod +x script.sh
./script.shchmod +x 없으면 kernel 이 거부. bash script.sh 로 명시 실행은 가능 — shebang 무시하고 bash 명시.
Interpreter 거짓말 금지
shebang 이 한 가지, 본문이 다른 거? 버그. 본문에 [[ ]] (bash/zsh 전용) 있는데 shebang 이 #!/bin/sh 면 POSIX sh 가 막힘. 본문에 맞는 interpreter 골라 고정.