TODAY 105
#! 과 /usr/bin/env

유닉스 계열의 Command Line에서 실행시키는 스크립트를 확인해보면 첫 줄에 "#!" 시작하는 코드가 있습니다.

 

어원은 "Wikipedia: Shebang (Unix)"페이지에 잘 나와있는데 유닉스 계열에서는 sharp(#) + bang(!) 합성어로 sha-bang 이라 합니다.

 

"#!"은 2Byte의 매직넘버(magic number)로 이 스크립트를 실행시켜줄 프로그램의 경로를 지정하는 역활입니다.

 

예시

#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
#!/usr/bin/php

 

그런데 프로그램의 경로는 시스템 환경에 따라 달라질 수 있습니다. 그때 사용하는 것이 "env" 입니다.

"#!/usr/bin/env + 언어" 식으로 입력하는 방법이 있습니다.

 

< env 사용 >

#!/usr/bin/env bash
#!/usr/bin/env python
#!/usr/bin/env perl
#!/usr/bin/env php

 

"예시"과 같이 절대 경로를 입력하거나 "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