
유닉스 계열의 Command Line에서 실행시키는 스크립트를 확인해보면 첫 줄에 "
#!
" 시작하는 코드가 있습니다.영어로 "Shebang"이라고 하는데 한글로는 "쉬뱅"으로 전 읽는데 편하신데로 읽으시면 될거 같습니다. (표준이된 한글 명칭이 있는지 모르겠네요.)
어원은 "Wikipedia: Shebang (Unix)"페이지에 잘 나와있는데 유닉스 계열에서는 sharp(#) + bang(!) 합성어로 sha-bang 이라 합니다.
"
#!
"은 2Byte의 매직넘버(magic number)로 이 스크립트를 실행시켜줄 프로그램의 경로를 지정하는 역활입니다.(예시 1)
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
#!/usr/bin/php
그런데 프로그램의 경로는 시스템 환경에 따라 달라질 수 있습니다. 그때 사용하는 것이 "
env
" 입니다."
#!/usr/bin/env
+ 언어
" 식으로 입력하는 방법이 있습니다.(예시 2)
#!/usr/bin/env bash
#!/usr/bin/env python
#!/usr/bin/env perl
#!/usr/bin/env php
"(예시 1)"과 같이 절대 경로를 입력하거나 "(예시 2)" 처럼 입력해도 동일하게 실행됩니다.
env
는 환경 변수에서 지정한 언어의 위치를 찾아서 실행됩니다. 다양한 환경에서 실행되는 스크립트라면 "env
"를 사용하는 것이 좋습니다.env 명령어 보충 설명
옵션 | 설명 |
---|---|
- , -i , --ignore-environment | 현재 환경을 무시하고 지정한 값을 사용 |
-u , --unset=NAME | 지정한 변수 제거 |
--help | 도움말 표시 |
--version | 버전 정보 표시 |
# 환경 변수 정보 출력
env
# 환경 변수 정보 변경
env -i HOSTNAME=test.com
# 환경 변수 정보 변경
env -u HOSTNAME
# env 이용한 bash 실행하기
/usr/bin/env bash --version
함께보기
- KLDP: #! 으로 시작하기
- Wikipedia: Shebang (Unix)
- Wikipedia: env
- The #! magic, details about the shebang/hash-bang mechanism on various Unix flavours
- Why is it better to use “#!/usr/bin/env NAME” instead of “#!/path/to/NAME” as my shebang?
- What is the preferred Bash shebang?
related posts
linux
10월 8, 2015
0