[리눅스] 환경변수 설정할 때 env, set, export, declare
조회수 44357회
환경변수를 등록하는 명령어가 생각보다 많더군요. env, set, export, declare를 사용할 수 있는 것 같은데 명령어가 이렇게나 많은 이유는 무엇인가요?
그리고 이 명령어들 사이에 차이점이 있나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
리눅스에서 가장 많이 사용하는 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"이라는 유닉스의 철학에 맞게 작은 프로그램들의 집합으로 구성된 시스템이며, 리눅스는 이를 모방하여 만들어, 별거아닌 것 같은 기능들도 모두 작은 프로그램으로 제공하며, 이러한 명령어들을 이용하여 쉘 프로그래밍을 할 수 있습니다.
댓글 입력