※ 공부하는 포스팅으로 틀린 것이나 맞지 않는 표현 있을 수 있습니다.
1. 셔뱅 줄이란
- 파이썬 스크립트 파일 첫 줄에 #!으로 시작하면 shebang line이라 한다.
리눅스와 기타 유닉스 등의 운영체제는 shebang line을 기본적으로 지원하며 파이썬 스크립트 파일 실행 방법을 나타내기 위해 리눅스와 유닉스 운영체제에서 일반적으로 사용된다. 또한 파이썬 스크립트의 shebang line을 유닉스와 윈도우 간에 이식성이 있도록 하기 위해 사용할 인터프리터를 지정하는 여러 "가상" 명령을 지원한다.
- 기본 shebang line
#! /usr/bin/python
#! /usr/bin/python2
#! /usr/bin/python3
- 지원되는 가상 명령
/usr/bin/env python
/usr/bin/python
/usr/local/bin/python
python
- 특별 shebang line
/usr/bin/env
설치된 인터프리터를 찾기 전 파이썬 실행 파일을 PATH에서 검색한다. PATH 검색을 수행하는 유닉스 env 프로그램의 동작에 해당한다.
절대 경로에 상관없이 python 인터프리터의 위치를 찾아서 실행한다.
아직 위 두 부분의 이야기가 이해가 되지 않는다. 일단 이해한 것은 시스템에 따라 파이썬 설치 경로가 다를 때 이용하면 편하다는 것이다.
2. 우분투 환경에서 shebang line 확인해보기
파이썬 버전 2와 파이썬 버전 3의 print문 문법이 다른 것을 이용하여 테스트한다.
우선 virtual-machine 우분투에 파이썬 버전이 무엇이 있는지 확인합니다.

파이썬 버전 3.8 만 확인되니 python 2.7을 install 하였다.
sudo apt install python2

첫 줄에서 python2.7 버전이 잘 install 된 것을 확인할 수 있습니다.
테스트를 위한 파일을 준비합니다
1. #!/usr/bin/python2 정상 실행

python_v2.py를 nano 편집기를 이용하여 만들고 shebang 줄은 python2를 사용합니다.

파일의 실행 권한을 주기 위해
chmod 777 python_v2.py
를 입력합니다.

./python_v2.py
를 입력하여 python_v2.py를 실행시킵니다. 일반적으로 파이썬 파일을 실행할 경우 python을 파이썬 파일명 앞에 명시해주는 것이 맞지만 이 테스트에서는 shebang line이 어떻게 동작되는지를 확인하기 위해 위와 같이 입력합니다.

python version 2라고 정상적으로 출력이 되는 것이 확인됩니다.
이제 반대로 shebang line에 python3을 명시하였을 때의 상태를 확인하여 실제 shebang line이 동작되는지 확인합니다.
2. #!/usr/bin/python3 코드 버전 맞지 않을 때 실행

shebang line python3을 사용합니다.

shebang line python2를 명시하였을 때와 동일하게./python_v2.py로 실행하게 되면 syntaxError(구문 오류)를 내보내며 코드가 실행되지 않고 종료된다.
이처럼 shebang line은 python 스크립트 파일에서 파이썬의 경로 및 버전을 명시해주어 파이썬 스크립트 파일의 실행을 돕는 역할을 한다. 또한 shebang line을 통해 해당하는 파이썬 파일의 실행 버전도 유추할 수 있다.
Reference
4. 윈도우에서 파이썬 사용하기 — Python 3.10.4 문서
4. 윈도우에서 파이썬 사용하기 이 문서는 Microsoft 윈도우에서 파이썬을 사용할 때 알아야 할 윈도우 특정 동작에 대한 개요를 제공하는 것을 목표로 합니다. 대부분의 유닉스 시스템과 서비스와
docs.python.org
'python' 카테고리의 다른 글
[python] 파이썬 자습서 2. 파이썬 인터프리터 사용하기 (0) | 2022.06.17 |
---|---|
[python] 파이썬 자습서 1. 입맛 돋우기 (0) | 2022.06.15 |
[python] docx 라이브러리 이용기 (0) | 2022.06.14 |
[python] 지도 라이브러리 Folium 사용기 (0) | 2022.06.05 |
[python] 파이썬 자습서 0. (1) | 2022.05.14 |