[Shell Script] Environment[Shebang-ENV]

스크립트의 시작

보통 Unix Linux에서는 여러가지 스크립트를 만들어 사용합니다.

sh, bash, python, perl 등등 여러가지를 만들수가 있는데 스크립트를 만들때 공통적으로 사용되는게 있습니다.

처음 첫줄은 '#!' 시작을 합니다. 이것으로 시작을 하면서 스크립트가 어떤 스크립트인지 알려줍니다.

 

이런 방법을 shebang(쉬뱅)이라고 합니다. 어원은 유닉스 계열에서는 sharp(#) + bang(!) 합성어로 sha-bang 이라 합니다.

 

shebang이있는 텍스트 파일이 Unix 유사한 운영 체제 에서 실행 가능한 것처럼 사용되는 경우 프로그램 로더 메커니즘은 파일의 나머지 줄을 인터프리터 지시문 으로 구문 분석합니다 . 로더는 지정된 인터프리터 프로그램을 실행하고, 프로그램이 파일을 입력 데이터로 사용할 있도록 스크립트를 실행할 처음 사용된 경로를 인수로 전달합니다. 예를 들어, 스크립트가 path to script 경로로 이름이 지정되고 다음 줄로 시작하는 #!/bin/sh경우 프로그램 로더는 path/to/script 전달 하여 프로그램 /bin/sh 실행하도록 지시합니다.

 

■ Shebang-ENV

스크립트를 작성할때 스크립트 언어에 따라 다음과 같이 첫줄을 지정합니다.

#!/bin/sh : Bourne 또는 / bin 디렉토리에 있다고 가정되는 호환 가능한

#!/bin/bash : Bash 셸을 사용하여 파일 실행

#!/usr/bin/python : 프로그램 검색 경로를 사용하여 Python 인터프리터로 실행

#!/usr/bin/perl : 스크립트 수행

#!/usr/bin/php : php 스크립트 수행.

#!/bin/false– 아무 작업도하지 않고 0 아닌 종료 상태를 반환하여 실패를 나타냅니다. .sh / bash, sourcecsh / tcsh 명령 또는 .profile, .cshrc 또는 .login 파일 같은 특정 컨텍스트에서 실행하기위한 스크립트 파일의 독립 실행 실행을 방지하는 사용 됩니다.

 

그러나 스크립트 수행 파일(sh , bash, python, perl, php) 위치에 있다는 보장을 없습니다. 이럴때 다음과 같이 하면 자동으로 스크립트 언어를 찾아 수행하게 됩니다.

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

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

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

env에서 실행 스크립트를 찾아서 자동으로 수행해 줍니다. 편리한 방법이라 있습니다.

 

 

■ env 명령어

터미널에서 env 입력하고 엔터를 치면 현제 설정되어 있는 환경변수를 확인해 있습니다.

환경변수를 수정하거나 설정하는 방법이 몇가지 있습니다.

 

# 환경 변수 정보 출력

shell > env

 

# 환경 변수 정보 변경

shell > env -i HOSTNAME=test.com

shell > env -i /bin/sh

 

# 환경 변수 정보 변경

shell > env -u HOSTNAME

 

# env 이용한 bash 실행하기

shell > /usr/bin/env bash --version

 

참고 URL :

https://en.wikipedia.org/wiki/Shebang_(Unix)

https://ko.wikipedia.org/wiki/Env

Designed by JB FACTORY