[Linux] Shell Variables – 지역 변수와 환경 변수

environment variables

Shell Variables는 스크립트 작성에 있어서 필수적인 요소입니다. 변수의 종류는 크게 지역 변수와 환경 변수(environment variables) 두 가지로 나눌 수 있습니다. 이번 글에서는 두 변수가 어떻게 다른지 비교해 보도록 하겠습니다.

Shell Variables – 지역 변수

지역변수는 현재 쉘 또는 특정 스크립트 내에서만 사용할 수 있는 변수를 말합니다. 이러한 변수는 해당 프로세스 내에서만 유효하며 자식 프로세스에 전달되지 않습니다.

지역 변수 생성

리눅스 터미널에서 아래와 같이 정의할 수 있습니다.

[root@rhel84 ~]# color=blue

“blue”를 값으로 가지는 “color”변수를 설정하였습니다. 해당 변수는 현재 쉘에서만 유효하며 자식 프로세스에게 상속되지 않습니다.

지역 변수 확인

위에서 만든 color 변수를 호출해 보도록 하겠습니다.

[root@rhel84 ~]# echo $color
blue

echo 명령어를 통하여 “color”변수를 호출하면 위에서 설정한 변수 값을 정상적으로 호출하여 표시합니다.

color.sh라고 하는 color 변수를 출력하는 스크립트를 생성한 후 스크립트를 통하여 변수를 인식하는지 확인해 보겠습니다.

[root@rhel84 ~]# cat color.sh 
#!/bin/bash
echo $color
[root@rhel84 ~]# sh color.sh 

[root@rhel84 ~]# echo $color
blue

스크립트 내에서는 color 변수를 인식하지 못하는 것으로 확인됩니다. 이처럼 지역 변수는 현재 쉘에서만 유효하며 자식 프로세스에서는 사용하지 못합니다.

또한 지역 변수는 set명령어를 통해서도 확인할 수 있습니다. set 명령어는 환경 변수와 지역 변수 구분 없이 모든 변수를 출력합니다.

[root@rhel84 ~]# set | grep ^color=
color=blue

Shell Variables – 환경 변수

환경 변수는 시스템 전체에서 사용 가능한 변수입니다. 환경 변수로 설정된 변수는 자식 프로세스에서도 사용할 수 있어서 시스템 전역 설정 및 사용자 환경 구성에 많이 사용됩니다.

 

환경 변수 생성

변수 정의 시 export(내보내기)를 사용하면 하위 프로세스가 변수를 상속받을 수 있도록 환경 변수로 변수가 설정됩니다. export는 bash의 내장 쉘 명령어입니다.

[root@rhel84 ~]# export color=red

참고로 bash 내장 쉘 명령어 인지 아닌지는 type 명령어로 확인해 볼 수 있습니다.

## bash 쉘 내장 명령어
[root@server ~]# type export
export is a shell builtin

## 일반 명령어
[root@server ~]# type date
date is /usr/bin/date

환경 변수 확인

환경 변수를 호출해 보도록 하겠습니다.

[root@rhel84 ~]# echo $color
red
[root@rhel84 ~]# env | grep color
color=red

echo 명령어로 변수 호출을 통해서 확인할 수 있으며, env라는 명령어를 이용하여 환경 변수를 불러올 수도 있습니다. env 명령은 시스템에 설정된 전체 환경 변수를 출력합니다.

환경 변수가 스크립트에서도 인식하는지 확인해 봅니다.

[root@rhel84 ~]# cat color.sh 
#!/bin/bash
echo $color
[root@rhel84 ~]# sh color.sh 
red

Shell Variables 설정 해제

설정된 변수를 해제하는 방법은 unset 명령을 이용할 수 있습니다. 지역 변수와 환경 변수 모두 해제 방법은 동일합니다.

[root@rhel84 ~]# export color=red
[root@rhel84 ~]# env | grep color
color=red
[root@rhel84 ~]# unset color
[root@rhel84 ~]# env | grep color

파일에 변수 설정이 되어 있다면 파일이 다시 실행되면 변수가 다시 설정될 수 있으므로 그 부분 참고하셔서 사용하여야 합니다.

 

마치며

지역 변수와 환경 변수의 차이점을 살펴봤습니다. 지역 변수는 프로세스 내에서만 유효하기 때문에 스크립트 내에서만 임시적으로 사용할 때 사용되는 변수입니다. 반면에 환경 변수는 한번 설정하면 해당 쉘에서 실행시킨 하위 프로세스에서도 인식이 가능하기 때문에 사용자 로그인 변수나 시스템 전역 설정으로 많이 사용됩니다. 특히 명령어를 찾는 변수인 PATH 환경 변수가 그 사용의 대표적인 예입니다. PATH 환경 변수는 여기에서 확인하실 수 있습니다.

 

참고

https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-set-environment-variables-in-linux/

https://www.redhat.com/sysadmin/linux-environment-variables

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top