Shell
#! 셔뱅이란 (shell)
by yororing
2024. 9. 10.
00 개요
- shell script 맨 윗줄에 #! 뒤에 경로가 오는 문법에 대한 정리
01 Shebang #!이란
1. 정의
- Shebang은 script file의 첫 줄에 등장하는 특별한 문법으로, script 실행 시 어떤 interpretor(해석기)를 사용할지 시스템에 지시하는 역할을 함
- 일반적으로 LINUX와 같은 UNIX기반 운영체제에서 사용됨
- 이 문법은 #!로 시작하며, 그 뒤에 해당 스크립트를 실행할 인터프리터의 경로를 명시
2. 문법
1) 기본 형식
#!/path/to/interpreter
- 설명:
- #! 이후에 나오는 경로는 script를 실행할 interpretor(예: /bin/bash, /usr/bin/python)의 절대 경로
2) /usr/bin/env의 사용
#!/usr/bin/env python
- 이 형식은 Python script를 실행할 때 많이 사용되는데, /usr/bin/env는 주어진 프로그램을 시스템 환경변수(PATH)에서 찾아 실행하는 역할을 함
- 이 방법을 사용하면 스크립트 작성자가 특정 경로에 Python이 설치되어 있지 않아도, 사용자가 자신의 환경에 맞는 Python 버전을 실행할 수 있음
- 예시
- 일부 시스템에서는 Python이 /usr/bin/python에 설치되어 있고, 다른 시스템에서는 /usr/local/bin/python에 있을 수 있음
- env 명령어는 이를 자동으로 감지하고 해당 위치에서 Python을 찾아 실행함
- 이는 script의 포터블성 (portability)을 높여주기 때문에, 다양한 환경에서 script가 문제없이 실행될 수 있게 함
3. Shebang의 필요성
- UNIX 시스템에서 script를 실행하려면, 그 sciprt를 어떤 프로그램이 해석해야 할지 명시해야 함
- 만약 Shebang이 없다면, 사용자는 해당 script를 실행할 때마다 명령어 앞에 interpretor를 명시해야 함
- 예시
- Python script를 실행할 때 python script.py 대신, Shebang을 명시하면 단순히 ./script.py만으로도 실행 가능!
# #!/usr/bin/env python가 없는 경우, 명시적으로 Python 호출하여 스크립트 실행
$ python myscript.py
# #!/usr/bin/env python가 있는 경우, 시스템은 env 명령어를 사용해 Python 인터프리터를 찾아 스크립트 실행
$ ./myscript.py
4. Shebang의 장점
- 자동 interpretor 지정: script 실행 시 별도의 interpretor를 명시할 필요 없이, script 파일 자체에 명시된 interpretor로 실행됨
- 포터블성 (portability) 향상: /usr/bin/env 방식으로 interpretor를 지정하면, 다양한 환경에서 동일한 script 사용 가능!
- 코드 간결화: 실행 명령어를 간소화할 수 있어, 사용자의 명령어 입력 오류를 줄일 수 있음
5. 사용 예시
1) Bash script
#!/bin/bash
echo "Hello, world!"
2) Python script
#!/usr/bin/env python3
print("Hello, World!")
6. 요약
- Shebang은 UNIX 계열 시스템에서 script 실행을 간소화하고, 다양한 환경에서 script가 문제없이 실행되도록 돕는 중요한 요소
- /usr/bin/env를 이용한 방법은 여러 시스텝에서 python 같은 interpretor 언어를 사용할 때 유용하며 코드의 이식성을 높여줌
- Shebang을 적절히 사용 시 script 실행 과정이 편리해짐