Uinx/Linux: Shebang과 env에 대한 설명 (#!/usr/bin/env)


유닉스 계열의 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버전 정보 표시
(예시 3)
# 환경 변수 정보 출력
env

# 환경 변수 정보 변경
env -i HOSTNAME=test.com

# 환경 변수 정보 변경
env -u HOSTNAME

# env 이용한 bash 실행하기
/usr/bin/env bash --version

함께보기



linux
10월 8, 2015
0

Menu

Search

Popular Posts

디자이너를 위한 최고의 영화 (디자이너에게 영감을 주는 영화)

개인적으로 직접 조립하고 만드는걸 좋아했는데 만들기전에 만들어질 모습을 스케치하는 것을 즐겼습니다. 스케치 할때 머리 속에 있는 멋진 모습…

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다. (이런 것도 있구나 싶을 정도만 이해하도록 간단한 설명과 예제로 …

PHP7 공개 전 참고 사이트 소개

PHP7 공개가 2015년 10월이라고 한다. 그래서 인지 모르겠지만 부쩍 PHP7에 대한 글들을 많이 찾아볼 수 있어 참고해볼 만한 …

Contact Me