- 리눅스에서 vim을 이용하여 스크립트를 작성할 때, 첫 줄에 위치하는 '#!' (shebang)에 대해서 알아보겠습니다.
- #! 뒤에는 해당 스크립트를 실행하는 데 필요한 인터프리터의 절대 경로가 위치합니다.
- 쉘 스크립트와 파이썬 모두 스크립트 언어라는 공통점을 가지고 있고, 리눅스 OS가 코드를 실행할 때 필요한 인터프리터의 경로를 지정하는 것이 바로 #!(shebang)의 역할입니다.
- #!은 반드시 스크립트의 첫 번째 줄에 위치하여야 하며, 다른 줄에는 위치할 수 없습니다.
- #!을 이용하면 인터프리터의 위치가 리눅스 시스템마다 다르더라도 스크립트는 동일하게 작동합니다. 그렇기에 여러 리눅스 시스템에서 실행될 스크립트 파일을 작성하기에 유용합니다.
- 아래에서 쉘 스크립트, 파이썬에 대한 shebang예시를 살펴보겠습니다.
#!/bin/bash
- .sh 확장자를 가지는 쉘 스크립트 파일을 작성할 때 리눅스 운영체제에게 코드를 실행하기 위한 bash 쉘의 인터프리터 경로를 지시합니다.
#!/usr/bin/env python3
- python3 인터프리터의 경로를 지시합니다.
#! (shebang)의 주요 특징과 용도
- 스크립트 권한 : 스크립트에 #!가 포함되면, 사용자는 스크립트를 직접 실행할 수 있게 됩니다. 예를 들어, './myscript.py'와 같이 실행할 수 있으며 별도로 'python3 myscript.py'라고 입력할 필요가 없습니다.
- 다만, #!가 포함되면 스크립트 파일을 직접 실행하는 것이기에 실행 권한이 있어야 합니다. 그래서 'chmod +x myscript.py'와 같은 명령어로 스크립트 파일에 실행권한을 부여해 주어야 합니다.
- 다양한 인터프리터 지원 : #!를 사용하면 Bash, Python, Perl, Ruby 등 다양한 언어로 작성된 스크립트를 동일한 방식으로 실행할 수 있습니다. #! 뒤에 정확한 인터프리터의 경로를 지정해주어야 합니다.
- 환경독립성 : '#!/usr/bin/env'구문을 사용하면 시스템의 'PATH'라는 환경변수에 지정된 인터프리터를 자동으로 찾아 사용할 수 있습니다.
'Linux' 카테고리의 다른 글
[Linux] Windows <-> Linux 복붙 PuTTY 명령어 (0) | 2024.05.17 |
---|---|
[Linux] 리눅스 프로세스 실행 방식 - foreground, background (0) | 2023.08.21 |
[Linux] LVM(Logical Volume Management)란? (0) | 2023.08.21 |
[Linux] 지정한 시간에 원하는 명령을 실행 - at 명령어 (0) | 2023.08.13 |
[Linux] Shell 변수 참조 - $ (0) | 2023.08.08 |