관리 메뉴

태섭씨 블로그

리눅스 #! (hash-bang) , env 명령어 본문

IT/linux

리눅스 #! (hash-bang) , env 명령어

태섭씨 2015. 2. 11. 15:08

#! : she-bang 또는 hash-bang이라고 부른다. http://en.wikipedia.org/wiki/Shebang_(Unix) 참고


예전에 bash 스크립트 , python 코드 작성시 

#!/bin/bash

#!/usr/bin/python

이런식으로 절대경로에 프로그램 선언을 많이 했는데, 


다른 프로젝트에서는

#!/usr/bin/env bash

#!/usr/bin/env python

이런식으로 작성이 되어 있었다.


그래서 궁금해서 찾아본 내용을 정리한다.


CentOS 6.4 에서 env의 man page를 보니, 아래와 같이 나와있다.

NAME

       env - run a program in a modified environment


SYNOPSIS

       env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]


 - 절대 경로 사용시 당연히 PATH 환경변수에 프로그램이 없어도 상관이 없다. 물론 프로그램 설치 위치에 dependency가 생긴다.(portable 하지 않음) 

 - env 명령어를 사용시 환경 변수를 설정해서 프로그램을 실행이 가능한듯 하다.

 - env 사용시 PATH 환경변수에 해당 프로그램이 없으면 실행이 되지 않는다. 


아마 env 명령어를 사용하는 이유는 portable 하다는 것 하나인 듯 하다... (PATH에 프로그램 위치가 걸려 있어야 하지만.)

아래 링크를 참고.

http://unix.stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my



'IT > linux' 카테고리의 다른 글

리눅스 유용한 command  (0) 2015.07.19
Comments