24 Feb What is Shebang?
Linux에서 script를 열었을 때 첫 줄이 #!
로 시작하는 경우를 종종 보게 된다. 이를 shebang이라고 부르는데 어원에 대해서는 sharp + bang, hash + bang, shell + bang 등 여러가지 설이 있지만 이름이나 어원은 사실 크게 중요한 것은 아니다. Shebang line이 script에서 수행하는 역할을 이해하는 것만으로 충분하다.
#!/bin/bash
#!/bin/csh
예를 들어 script.py라는 Python script가 있다고 가정하자. 이 script를 실행하기 위해서는 아래와 같은 command를 수행해야 한다.
$ /path/to/python script.py
이제 script.py의 시작 부분에 아래와 같이 shebang line을 추가해보자.
#!/usr/bin/python
그리고 chmod
명령어를 이용하여 script.py에 실행 권한을 추가한다.
$ chmod +x script.py
이로써 Python 명령어, 즉, python
을 직접 사용하지 않고도 script.py 실행이 가능하게 된다. Shebang line에 기술된 Python 명령어의 절대경로를 이용하여 자동으로 script가 실행되는 것이다.
$ script.py
Shebang line은 또 다른 방식으로도 기술할 수 있다. 이번에는 Python 명령어의 위치를 직접적으로 기술하는 것이 아니라 env
의 경로와 함께 Python 명령어의 이름을 기술한다. 해당 방식을 사용하면 사용자의 환경, 즉, $PATH
에서 Python 명령어의 위치를 자동으로 찾고 해당 명령어를 이용하여 script를 실행하게 된다.
#!/usr/bin/env python
Summary
위에서 확인한 것과 같이 shebang을 사용하면 기본적으로 script를 더 쉽고 간편하게 실행할 수 있다는 장점이 있다. 두 방식 간에 차이가 있으므로 상황에 맞게 적절한 방식을 사용하면 된다.
경우에 따라 Linux 상에 /usr/bin/python 외에 여러 경로에 서로 다른 Python이 설치되어 있을 수 있다. 즉, 사용자에 따라 사용하는 Python의 버전이 다를 수도 있다는 의미다. 하지만 첫 번째 방식으로 shebang line을 기술함으로써 특정 Python 명령어를 기본적으로 사용하도록 설정할 수 있게 된다. 반면 두 번째 방식으로 shebang line을 기술하는 경우 shebang line 기술 시 Python 명령어의 절대경로를 몰라도 무관할 뿐만 아니라, Python 명령어의 위치가 변경되더라도 영향을 받지 않는다. 또한 사용자가 설정한 환경에 자동으로 맞추어지는 것이 유리한 경우 이점을 갖는다.
References
Jung Ik Moon
Verification Engineer
하코형
Posted at 12:48h, 17 September쉬뱅. env 방법 꿀팁이네요. 감사합니다
IKS
Posted at 12:49h, 17 September감사합니다.
IKS
Posted at 08:54h, 23 JuneComment disabled due to spam comments.