[리눅스] 환경변수 설정할 때 env, set, export, declare


환경변수를 등록하는 명령어가 생각보다 많더군요. env, set, export, declare를 사용할 수 있는 것 같은데 명령어가 이렇게나 많은 이유는 무엇인가요?

그리고 이 명령어들 사이에 차이점이 있나요?

  • 2016년 05월 12일에 작성됨

조회수 1999


1 답변


좋아요
2
싫어요
채택취소하기

리눅스에서 가장 많이 사용하는 Bash(혹은 sh)의 빌틴 명령어들입니다.

각 명령어마다 쓰임새가 조금씩 다릅니다.

env : 환경변수를 보여주거나, 설정 혹은 삭제 하는 명령입니다. http://ss64.com/bash/env.html

$ env

현재 세션에 정의된 환경 변수들을 화면에 출력합니다.

$ env NAME=VALUE 

NAME이라는 환경변수에 VALUE라는 값을 지정합니다.

$ env -u NAME

NAME 환경변수를 삭제합니다.

set : Bash의 쉘 변수를 관리하는 명령어입니다. http://ss64.com/bash/set.html

set NAME=VALUE 
# Bash에서는 다음과 같이 생략이 가능합니다.
NAME=VALUE

쉘 변수는 Bash라는 쉘 스크립트 언어에서 사용하는 변수이고, 환경 변수는 운영체제에서 사용하는 변수(예: PATH)입니다.

해제하는 방법은 unset 명령어를 사용합니다.

export: 쉘 변수를 환경 변수로 변경해주는 명령입니다.

NAME=VALUE
export NAME

위는 set과 export를 사용하여 다음 명령과 동일한 결과를 가져옵니다.

env NAME=VALUE

declare: 이는 쉘 변수의 타입을 지정하는 명령입니다. https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/declareref.html

읽기전용, 정수, 배열, 함수 등으로 쉘 변수의 성격을 선언할 때 사용합니다.

  • Bash는 쉘과 스크립트 언어의 성격을 모두 가지고 있습니다. 스크립트로 사용할 때, 쉘 프로그래밍 혹은 쉘 스크립팅이라고 합니다. 프로그래밍 요소가 있기 때문에 위와 같이 변수를 관리하는 명령이 있습니다. 환경 변수와 쉘 변수는 다른 데, 다른 언어에서는 쉽게 구분이 가능한 반면에, 쉘 프로그래밍을 하다 보면 이 두 가지의 사용 용법이 비슷하여 동일한 것으로 오해할 수 있습니다.
  • 유닉스는 "Small is beautiful"이라는 유닉스의 철학에 맞게 작은 프로그램들의 집합으로 구성된 시스템이며, 리눅스는 이를 모방하여 만들어, 별거아닌 것 같은 기능들도 모두 작은 프로그램으로 제공하며, 이러한 명령어들을 이용하여 쉘 프로그래밍을 할 수 있습니다.
  • 2016년 05월 12일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

  • 상세한 답변 정말 감사드립니다! 감동감동!    고휘준   2016.5.13 20:03     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close