C.W.K.
Stream
Lesson 01 of 12 · published

Shebang 줄

~8 min · shebang, interpreter

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

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.sh

chmod +x 없으면 kernel 이 거부. bash script.sh 로 명시 실행은 가능 — shebang 무시하고 bash 명시.

Interpreter 거짓말 금지

shebang 이 한 가지, 본문이 다른 거? 버그. 본문에 [[ ]] (bash/zsh 전용) 있는데 shebang 이 #!/bin/sh 면 POSIX sh 가 막힘. 본문에 맞는 interpreter 골라 고정.

Code

안전 휴대성 헤더·bash
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
echo "running on $(uname -s)"

External links

Exercise

hello.sh 작성: #!/usr/bin/env bash + echo hi. chmod +x hello.sh; ./hello.sh. shebang 을 #!/usr/bin/env zsh 로 바꾸고 재실행 — 같은 출력, 다른 interpreter.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.