Post

셔뱅(#!, Shebang)에 대해서

셔뱅(#!, Shebang)이 무엇인지, 어떻게 쓰는건지 알아봅시다.

python을 다시 공부하던 중 #!/usr/bin/python3를 보고 익숙하지 않아 찾아보게 되었다.

셔뱅이란

  • #!로 표기하는 문자 시퀀스
  • 스크립트의 맨 처음에 온다.
  • 유닉스 계열 OS에서 이 기호가 있으면 나머지 부분을 interpreter directive로 구문 분석
    • 해당 경로에 있는 인터프리터 프로그램을 실행
    • 실행한 스크립트의 경로를 해당 프로그램에게 넘긴다.

예시

1
2
#!/usr/bin/python3
print('hi')
1
2
3
4
$ python3 test
hi
$ ./test
hi

셔뱅이 없으면 기본 쉘로 실행한다.

1
echo hi
1
2
$ ./test
hi

매직 넘버

매직 넘버는 컴퓨터 프로그래밍에서 다른 의미도 갖지만 유닉스, 리눅스 계열에서 파일 유형 메타데이터를 통합하기 위해서 파일 내부 첫 2 bytes 구간에 매직 넘버를 할당하고 저장한다.

셔뱅은 매직 넘버의 특별한 경우로 실행하려는 파일(스크립트)을 어떤 인터프리터로 읽을지 결정한다.

This post is licensed under CC BY 4.0 by the author.