본문 바로가기
개발환경

[Shell] env and Shebang line

by ds31x 2023. 6. 20.

env 명령어는 주로

  • environment variable들을 확인하거나
  • 특정 명령어 수행할 때 특정 environment variable을 지정해주는데 사용된다.

The env command allows youto
display your current environment or
run a specified command
in a changed environment.


개인적으로 env를 많이 사용하는 경우는 #!으로 시작하는 script의 shebang line 이다.

 

Shebang line이란

 

Script를 구성하는 commands을 해석 및 수행할 프로그램 (보통 interpreter. bash, zsh, python 등)을 "절대경로(absolute path)로 지정하는 첫 번째 line은 #!으로 시작하며 이를 shebang line이라고 지칭함. 이때, 해당 프로그램의 경로는 시스템에 따라 다를 수 있으므로, 절대경로로 지정하는 대신, env를 사용하여 해당 프로그램의 위치를 알아서 찾아 실행할 수 있도록 해놓으면 script file의 호환성이 향상됨. env의 인수로 shell script의 command를 해석 및 수행할 프로그램을 지정하는 방식임.(자세한 내용은 아래를 참고).

  • 단, 이 경우, env절대경로로 기재해야한다. : /usr/bin/env가 주로 사용된다.

Syntax

env [-i|-][Name=Value]...[Command[ Argument ...]]
  • Command가 지정되면, 해당 Commandenv에 의한 environment variable이 설정된 상황에서 수행된다.
    • -i flag가 설정된 경우, 현재의 environment variable들이 모두 무시(ignore)됨.
    • env 뒤에 입력된 Name=Value등이 뒤에 놓이는 Command를 실행시키기 전 envrionment variable로 설정이 됨.
    • env로 설정된 environment는 Command가 수행되는 동안만 유효함.
  • env만 입력된 경우, 현재의 environment variable들을 Name=Value들로 출력해줌.
  • env Name이라고 지정한 경우, Name에 해당하는 environment variable만 보여줌.

Example

env TZ=MST7MDT data

위 경우, time zone에 해당하는 environment variable TZMST7MDT로 변경하고 나서 data 커맨드가 수행됨.

 

env -i PATH=$PATH IDIR=/$HOME/include LIBDIR=/$HOME/lib make

위 경우, make명령어가 오직 PATH, IDIR, LIBDIR 환경변수만 있는 환경에서 수행된다.


Shebang line

Script를 해석 (or 수행)할 프로그램을 지정하는 line인,

shebang line에 envpython 명령어를 다음 예제의 첫라인처럼 사용함.

#!/usr/bin/env python

print('Hello, Python')

 

bash에 대한 script라면 다음과 같음.

#!/usr/bin/env bash

echo "Hello, Bash!"

참고자료

https://www.ibm.com/docs/en/aix/7.2?topic=e-env-command 

 

env Command

Purpose Displays the current environment or sets the environment for the execution of a command. SyntaxTo Display Multiple Environment Variables env [  -i | - ] [Name=Value ]... [Command [ Argument ... ] ] To Display A Single Environment Variable env

www.ibm.com

https://en.wikipedia.org/wiki/Shebang_%28Unix%29

 

Shebang (Unix) - Wikipedia

From Wikipedia, the free encyclopedia The symbol "#!", used in computing at the beginning of a Unix-like script In computing, a shebang is the character sequence consisting of the characters number sign and exclamation mark (#!) at the beginning of a scrip

en.wikipedia.org

 

728x90

'개발환경' 카테고리의 다른 글

[Env] PowerShell v7.3.5  (0) 2023.06.28
[Env] xterm: Font  (0) 2023.06.26
[Env] VSCode : Terminal Font 변경  (0) 2023.06.21
[Env] Environment Variable (환경변수)  (0) 2023.06.20
[Env] Oh-My-Posh  (0) 2023.06.20